@defra/forms-model 3.0.514 → 3.0.516
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 -3
- package/dist/module/form/form-audit/enums.js.map +1 -1
- package/dist/module/form/form-audit/index.js +124 -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 +4 -3
- package/dist/types/form/form-audit/enums.d.ts.map +1 -1
- package/dist/types/form/form-audit/index.d.ts +25 -1
- package/dist/types/form/form-audit/index.d.ts.map +1 -1
- package/dist/types/form/form-audit/types.d.ts +174 -19
- 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 -3
- package/src/form/form-audit/index.ts +303 -0
- package/src/form/form-audit/types.ts +258 -17
- package/src/stubs.ts +1 -0
@@ -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,8BAA8B,EACnC,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,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,wBAAwB;IACvC,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,wBAAwB;IACvC,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,4BAA4B;IAC3C,iBAAiB,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,6BAA6B;IAC5C,kBAAkB,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,2BAA4B,SAAQ,mBAAmB;IACtE,OAAO,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,CAAA;CAC9C;AAED,MAAM,WAAW,kCACf,SAAQ,mBAAmB;IAC3B,OAAO,EAAE,kBAAkB,CAAC,uBAAuB,CAAC,CAAA;CACrD;AAED,MAAM,WAAW,8BAA+B,SAAQ,mBAAmB;IACzE,OAAO,EAAE,kBAAkB,CAAC,mBAAmB,CAAC,CAAA;CACjD;AAED,MAAM,WAAW,+BAAgC,SAAQ,mBAAmB;IAC1E,OAAO,EAAE,kBAAkB,CAAC,oBAAoB,CAAC,CAAA;CAClD;AAED,MAAM,WAAW,kCACf,SAAQ,mBAAmB;IAC3B,OAAO,EAAE,kBAAkB,CAAC,uBAAuB,CAAC,CAAA;CACrD;AAED,MAAM,WAAW,kCACf,SAAQ,mBAAmB;IAC3B,OAAO,EAAE,kBAAkB,CAAC,uBAAuB,CAAC,CAAA;CACrD;AAED,MAAM,WAAW,mCACf,SAAQ,mBAAmB;IAC3B,OAAO,EAAE,kBAAkB,CAAC,wBAAwB,CAAC,CAAA;CACtD;AAED,MAAM,WAAW,mCACf,SAAQ,mBAAmB;IAC3B,OAAO,EAAE,kBAAkB,CAAC,wBAAwB,CAAC,CAAA;CACtD;AAED,MAAM,WAAW,uCACf,SAAQ,mBAAmB;IAC3B,OAAO,EAAE,kBAAkB,CAAC,4BAA4B,CAAC,CAAA;CAC1D;AAED,MAAM,WAAW,wCACf,SAAQ,mBAAmB;IAC3B,OAAO,EAAE,kBAAkB,CAAC,6BAA6B,CAAC,CAAA;CAC3D;AAED,MAAM,WAAW,uBAAwB,SAAQ,mBAAmB;IAClE,OAAO,EAAE,kBAAkB,CAAC,mBAAmB,CAAC,CAAA;CACjD;AAED,MAAM,MAAM,sBAAsB,GAC9B,2BAA2B,GAC3B,kCAAkC,GAClC,8BAA8B,GAC9B,+BAA+B,GAC/B,kCAAkC,GAClC,kCAAkC,GAClC,mCAAmC,GACnC,mCAAmC,GACnC,uCAAuC,GACvC,wCAAwC,GACxC,uBAAuB,CAAA;AAE3B,MAAM,MAAM,yBAAyB,GACjC,sBAAsB,GACtB,sBAAsB,CAAA;AAE1B,MAAM,WAAW,sBAAuB,SAAQ,mBAAmB;IACjE,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,MAAM,WAAW,GAAG,sBAAsB,GAAG,yBAAyB,CAAA;AAE5E,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,8BAA8B,CAAA;IAC7C,QAAQ,EAAE,yBAAyB,CAAA;IACnC,IAAI,EAAE,qBAAqB,CAAA;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,IAAI,CAAA;IACf,SAAS,EAAE,SAAS,CAAA;IACpB,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,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,uBAAwB,SAAQ,WAAW;IAC1D,QAAQ,EAAE,yBAAyB,CAAC,IAAI,CAAA;IACxC,IAAI,EAAE,qBAAqB,CAAC,kBAAkB,CAAA;IAC9C,IAAI,EAAE,2BAA2B,CAAA;CAClC;AAED,MAAM,WAAW,8BAA+B,SAAQ,WAAW;IACjE,QAAQ,EAAE,yBAAyB,CAAC,IAAI,CAAA;IACxC,IAAI,EAAE,qBAAqB,CAAC,yBAAyB,CAAA;IACrD,IAAI,EAAE,kCAAkC,CAAA;CACzC;AAED,MAAM,WAAW,0BAA2B,SAAQ,WAAW;IAC7D,QAAQ,EAAE,yBAAyB,CAAC,IAAI,CAAA;IACxC,IAAI,EAAE,qBAAqB,CAAC,sBAAsB,CAAA;IAClD,IAAI,EAAE,8BAA8B,CAAA;CACrC;AAED,MAAM,WAAW,2BAA4B,SAAQ,WAAW;IAC9D,QAAQ,EAAE,yBAAyB,CAAC,IAAI,CAAA;IACxC,IAAI,EAAE,qBAAqB,CAAC,uBAAuB,CAAA;IACnD,IAAI,EAAE,+BAA+B,CAAA;CACtC;AAED,MAAM,WAAW,8BAA+B,SAAQ,WAAW;IACjE,QAAQ,EAAE,yBAAyB,CAAC,IAAI,CAAA;IACxC,IAAI,EAAE,qBAAqB,CAAC,0BAA0B,CAAA;IACtD,IAAI,EAAE,kCAAkC,CAAA;CACzC;AAED,MAAM,WAAW,8BAA+B,SAAQ,WAAW;IACjE,QAAQ,EAAE,yBAAyB,CAAC,IAAI,CAAA;IACxC,IAAI,EAAE,qBAAqB,CAAC,0BAA0B,CAAA;IACtD,IAAI,EAAE,kCAAkC,CAAA;CACzC;AAED,MAAM,WAAW,+BAAgC,SAAQ,WAAW;IAClE,QAAQ,EAAE,yBAAyB,CAAC,IAAI,CAAA;IACxC,IAAI,EAAE,qBAAqB,CAAC,2BAA2B,CAAA;IACvD,IAAI,EAAE,mCAAmC,CAAA;CAC1C;AAED,MAAM,WAAW,sCAAuC,SAAQ,WAAW;IACzE,QAAQ,EAAE,yBAAyB,CAAC,IAAI,CAAA;IACxC,IAAI,EAAE,qBAAqB,CAAC,2BAA2B,CAAA;IACvD,IAAI,EAAE,mCAAmC,CAAA;CAC1C;AAED,MAAM,WAAW,0CACf,SAAQ,WAAW;IACnB,QAAQ,EAAE,yBAAyB,CAAC,IAAI,CAAA;IACxC,IAAI,EAAE,qBAAqB,CAAC,+BAA+B,CAAA;IAC3D,IAAI,EAAE,uCAAuC,CAAA;CAC9C;AAED,MAAM,WAAW,2CACf,SAAQ,WAAW;IACnB,QAAQ,EAAE,yBAAyB,CAAC,IAAI,CAAA;IACxC,IAAI,EAAE,qBAAqB,CAAC,gCAAgC,CAAA;IAC5D,IAAI,EAAE,wCAAwC,CAAA;CAC/C;AAED,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,QAAQ,EAAE,yBAAyB,CAAC,IAAI,CAAA;IACxC,IAAI,EAAE,qBAAqB,CAAC,kBAAkB,CAAA;IAC9C,IAAI,EAAE,uBAAuB,CAAA;CAC9B;AAED,MAAM,WAAW,qBAAsB,SAAQ,WAAW;IACxD,QAAQ,EAAE,yBAAyB,CAAC,IAAI,CAAA;IACxC,IAAI,EAAE,qBAAqB,CAAC,oBAAoB,CAAA;CACjD;AAED,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD,QAAQ,EAAE,yBAAyB,CAAC,IAAI,CAAA;IACxC,IAAI,EAAE,qBAAqB,CAAC,cAAc,CAAA;CAC3C;AAED,MAAM,WAAW,+BAAgC,SAAQ,WAAW;IAClE,QAAQ,EAAE,yBAAyB,CAAC,IAAI,CAAA;IACxC,IAAI,EAAE,qBAAqB,CAAC,4BAA4B,CAAA;CACzD;AAED,MAAM,WAAW,+BAAgC,SAAQ,WAAW;IAClE,QAAQ,EAAE,yBAAyB,CAAC,IAAI,CAAA;IACxC,IAAI,EAAE,qBAAqB,CAAC,4BAA4B,CAAA;CACzD;AAED,MAAM,WAAW,uBAAwB,SAAQ,WAAW;IAC1D,QAAQ,EAAE,yBAAyB,CAAC,IAAI,CAAA;IACxC,IAAI,EAAE,qBAAqB,CAAC,kBAAkB,CAAA;CAC/C;AAED,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,QAAQ,EAAE,yBAAyB,CAAC,IAAI,CAAA;IACxC,IAAI,EAAE,qBAAqB,CAAC,aAAa,CAAA;CAC1C;AAED,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,QAAQ,EAAE,yBAAyB,CAAC,IAAI,CAAA;IACxC,IAAI,EAAE,qBAAqB,CAAC,YAAY,CAAA;CACzC;AAED,MAAM,MAAM,YAAY,GACpB,kBAAkB,GAClB,uBAAuB,GACvB,8BAA8B,GAC9B,0BAA0B,GAC1B,2BAA2B,GAC3B,8BAA8B,GAC9B,8BAA8B,GAC9B,+BAA+B,GAC/B,sCAAsC,GACtC,0CAA0C,GAC1C,2CAA2C,GAC3C,mBAAmB,GACnB,qBAAqB,GACrB,oBAAoB,GACpB,+BAA+B,GAC/B,+BAA+B,GAC/B,uBAAuB,GACvB,mBAAmB,GACnB,kBAAkB,CAAA;AAEtB,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,YAAY,CAAA;CACtB;AAED,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG;IACvC,SAAS,EAAE,MAAM,CAAA;IACjB,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
|
+
}
|
@@ -16,19 +16,20 @@ export enum AuditEventMessageSubCategory {
|
|
16
16
|
export enum AuditEventMessageType {
|
17
17
|
FORM_CREATED = 'FORM_CREATED',
|
18
18
|
FORM_PUBLISHED = 'FORM_PUBLISHED',
|
19
|
-
|
19
|
+
FORM_TITLE_UPDATED = 'FORM_TITLE_UPDATED',
|
20
20
|
FORM_ORGANISATION_UPDATED = 'FORM_ORGANISATION_UPDATED',
|
21
21
|
FORM_TEAM_NAME_UPDATED = 'FORM_TEAM_NAME_UPDATED',
|
22
22
|
FORM_TEAM_EMAIL_UPDATED = 'FORM_TEAM_EMAIL_UPDATED',
|
23
23
|
FORM_SUPPORT_PHONE_UPDATED = 'FORM_SUPPORT_PHONE_UPDATED',
|
24
24
|
FORM_SUPPORT_EMAIL_UPDATED = 'FORM_SUPPORT_EMAIL_UPDATED',
|
25
|
-
|
26
|
-
|
25
|
+
FORM_SUPPORT_ONLINE_UPDATED = 'FORM_SUPPORT_ONLINE_UPDATED',
|
26
|
+
FORM_PRIVACY_NOTICE_UPDATED = 'FORM_PRIVACY_NOTICE_UPDATED',
|
27
27
|
FORM_NOTIFICATION_EMAIL_UPDATED = 'FORM_NOTIFICATION_EMAIL_UPDATED',
|
28
28
|
FORM_SUBMISSION_GUIDANCE_UPDATED = 'FORM_SUBMISSION_GUIDANCE_UPDATED',
|
29
29
|
FORM_JSON_UPLOADED = 'FORM_JSON_UPLOADED',
|
30
30
|
FORM_JSON_DOWNLOADED = 'FORM_JSON_DOWNLOADED',
|
31
31
|
FORM_DRAFT_CREATED_FROM_LIVE = 'FORM_DRAFT_CREATED_FROM_LIVE',
|
32
|
+
FORM_LIVE_CREATED_FROM_DRAFT = 'FORM_LIVE_CREATED_FROM_DRAFT',
|
32
33
|
FORM_DRAFT_DELETED = 'FORM_DRAFT_DELETED',
|
33
34
|
FORM_MIGRATED = 'FORM_MIGRATED',
|
34
35
|
FORM_UPDATED = 'FORM_UPDATED'
|
@@ -0,0 +1,303 @@
|
|
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 FormMessageChangesData,
|
16
|
+
type FormMessageDataBase,
|
17
|
+
type FormNotificationEmailChanges,
|
18
|
+
type FormNotificationEmailUpdatedMessageData,
|
19
|
+
type FormOrganisationChanges,
|
20
|
+
type FormOrganisationUpdatedMessageData,
|
21
|
+
type FormPrivacyNoticeChanges,
|
22
|
+
type FormPrivacyNoticeUpdatedMessageData,
|
23
|
+
type FormSubmissionGuidanceChanges,
|
24
|
+
type FormSubmissionGuidanceUpdatedMessageData,
|
25
|
+
type FormSupportEmailChanges,
|
26
|
+
type FormSupportEmailUpdatedMessageData,
|
27
|
+
type FormSupportOnlineChanges,
|
28
|
+
type FormSupportOnlineUpdatedMessageData,
|
29
|
+
type FormSupportPhoneChanges,
|
30
|
+
type FormSupportPhoneUpdatedMessageData,
|
31
|
+
type FormTeamEmailChanges,
|
32
|
+
type FormTeamEmailUpdatedMessageData,
|
33
|
+
type FormTeamNameChanges,
|
34
|
+
type FormTeamNameUpdatedMessageData,
|
35
|
+
type FormTitleChanges,
|
36
|
+
type FormTitleUpdatedMessageData,
|
37
|
+
type FormUpdatedMessageData,
|
38
|
+
type FormUploadedChanges,
|
39
|
+
type FormUploadedMessageData
|
40
|
+
} from '~/src/form/form-audit/types.js'
|
41
|
+
|
42
|
+
export const formMessageDataBase = Joi.object<FormMessageDataBase>({
|
43
|
+
formId: Joi.string().required(),
|
44
|
+
slug: Joi.string().required()
|
45
|
+
})
|
46
|
+
|
47
|
+
export const formCreatedMessageData =
|
48
|
+
formMessageDataBase.append<FormCreatedMessageData>({
|
49
|
+
title: Joi.string().required(),
|
50
|
+
organisation: Joi.string().required(),
|
51
|
+
teamName: Joi.string().required(),
|
52
|
+
teamEmail: Joi.string().required()
|
53
|
+
})
|
54
|
+
|
55
|
+
export const formUpdatedMessageData =
|
56
|
+
formMessageDataBase.append<FormUpdatedMessageData>({
|
57
|
+
description: Joi.string().trim().required()
|
58
|
+
})
|
59
|
+
|
60
|
+
export const formTitleChanges = Joi.object<FormTitleChanges>()
|
61
|
+
.keys({
|
62
|
+
title: Joi.string().required()
|
63
|
+
})
|
64
|
+
.required()
|
65
|
+
|
66
|
+
export const formOrganisationChanges = Joi.object<FormOrganisationChanges>()
|
67
|
+
.keys({
|
68
|
+
organisation: Joi.string().required()
|
69
|
+
})
|
70
|
+
.required()
|
71
|
+
|
72
|
+
export const formTeamNameChanges = Joi.object<FormTeamNameChanges>()
|
73
|
+
.keys({
|
74
|
+
teamName: Joi.string().required()
|
75
|
+
})
|
76
|
+
.required()
|
77
|
+
|
78
|
+
export const formTeamEmailChanges = Joi.object<FormTeamEmailChanges>()
|
79
|
+
.keys({
|
80
|
+
teamEmail: Joi.string().required()
|
81
|
+
})
|
82
|
+
.required()
|
83
|
+
|
84
|
+
export const formSupportPhoneChanges = Joi.object<FormSupportPhoneChanges>()
|
85
|
+
.keys({
|
86
|
+
phone: Joi.string().required()
|
87
|
+
})
|
88
|
+
.required()
|
89
|
+
|
90
|
+
export const formSupportOnlineChanges = Joi.object<FormSupportOnlineChanges>()
|
91
|
+
.keys({
|
92
|
+
url: Joi.string().required(),
|
93
|
+
text: Joi.string().required()
|
94
|
+
})
|
95
|
+
.required()
|
96
|
+
|
97
|
+
export const formPrivacyNoticeChanges = Joi.object<FormPrivacyNoticeChanges>()
|
98
|
+
.keys({
|
99
|
+
privacyNoticeUrl: Joi.string().required()
|
100
|
+
})
|
101
|
+
.required()
|
102
|
+
|
103
|
+
export const formNotificationEmailChanges =
|
104
|
+
Joi.object<FormNotificationEmailChanges>()
|
105
|
+
.keys({
|
106
|
+
notificationEmail: Joi.string().required()
|
107
|
+
})
|
108
|
+
.required()
|
109
|
+
|
110
|
+
export const formSubmissionGuidanceChanges =
|
111
|
+
Joi.object<FormSubmissionGuidanceChanges>()
|
112
|
+
.keys({
|
113
|
+
submissionGuidance: Joi.string().required()
|
114
|
+
})
|
115
|
+
.required()
|
116
|
+
|
117
|
+
export const formUploadedChanges = Joi.object<FormUploadedChanges>()
|
118
|
+
.keys({
|
119
|
+
value: Joi.string().required()
|
120
|
+
})
|
121
|
+
.required()
|
122
|
+
|
123
|
+
export const formSupportEmailChanges =
|
124
|
+
Joi.object<FormSupportEmailChanges>().keys({
|
125
|
+
address: Joi.string().email().required(),
|
126
|
+
responseTime: Joi.string().required()
|
127
|
+
})
|
128
|
+
|
129
|
+
export function formChangesMessageData<T, U extends FormMessageChangesData>(
|
130
|
+
schema: ObjectSchema<T>
|
131
|
+
): ObjectSchema<U> {
|
132
|
+
return formMessageDataBase.append<U>({
|
133
|
+
changes: Joi.object<ChangesMessageData<T>>().keys({
|
134
|
+
previous: schema,
|
135
|
+
new: schema
|
136
|
+
})
|
137
|
+
})
|
138
|
+
}
|
139
|
+
|
140
|
+
export const auditUserSchema = Joi.object<AuditUser>().keys({
|
141
|
+
id: Joi.string().uuid().required(),
|
142
|
+
displayName: Joi.string().required()
|
143
|
+
})
|
144
|
+
|
145
|
+
export const validCategories = [
|
146
|
+
AuditEventMessageCategory.FORM,
|
147
|
+
AuditEventMessageCategory.ENTITLEMENT
|
148
|
+
]
|
149
|
+
|
150
|
+
export const validTypes = [
|
151
|
+
AuditEventMessageType.FORM_CREATED,
|
152
|
+
AuditEventMessageType.FORM_PUBLISHED,
|
153
|
+
AuditEventMessageType.FORM_TITLE_UPDATED,
|
154
|
+
AuditEventMessageType.FORM_ORGANISATION_UPDATED,
|
155
|
+
AuditEventMessageType.FORM_TEAM_NAME_UPDATED,
|
156
|
+
AuditEventMessageType.FORM_TEAM_EMAIL_UPDATED,
|
157
|
+
AuditEventMessageType.FORM_SUPPORT_PHONE_UPDATED,
|
158
|
+
AuditEventMessageType.FORM_SUPPORT_EMAIL_UPDATED,
|
159
|
+
AuditEventMessageType.FORM_SUPPORT_ONLINE_UPDATED,
|
160
|
+
AuditEventMessageType.FORM_PRIVACY_NOTICE_UPDATED,
|
161
|
+
AuditEventMessageType.FORM_NOTIFICATION_EMAIL_UPDATED,
|
162
|
+
AuditEventMessageType.FORM_SUBMISSION_GUIDANCE_UPDATED,
|
163
|
+
AuditEventMessageType.FORM_UPDATED,
|
164
|
+
AuditEventMessageType.FORM_JSON_UPLOADED,
|
165
|
+
AuditEventMessageType.FORM_JSON_DOWNLOADED,
|
166
|
+
AuditEventMessageType.FORM_DRAFT_CREATED_FROM_LIVE,
|
167
|
+
AuditEventMessageType.FORM_LIVE_CREATED_FROM_DRAFT,
|
168
|
+
AuditEventMessageType.FORM_DRAFT_DELETED,
|
169
|
+
AuditEventMessageType.FORM_MIGRATED
|
170
|
+
]
|
171
|
+
|
172
|
+
export const validMessageSchemaVersions = [AuditEventMessageSchemaVersion.V1]
|
173
|
+
|
174
|
+
export const messageSchema = Joi.object<AuditMessage>().keys({
|
175
|
+
entityId: Joi.string().required(),
|
176
|
+
schemaVersion: Joi.string()
|
177
|
+
.valid(...validMessageSchemaVersions)
|
178
|
+
.required(),
|
179
|
+
type: Joi.string().valid(...validTypes),
|
180
|
+
category: Joi.string()
|
181
|
+
.valid(...validCategories)
|
182
|
+
.required(),
|
183
|
+
createdAt: Joi.date().required(),
|
184
|
+
createdBy: auditUserSchema.required(),
|
185
|
+
data: Joi.when('type', {
|
186
|
+
switch: [
|
187
|
+
{
|
188
|
+
is: Joi.string().trim().valid(AuditEventMessageType.FORM_CREATED),
|
189
|
+
then: formCreatedMessageData
|
190
|
+
},
|
191
|
+
{
|
192
|
+
is: Joi.string().trim().valid(AuditEventMessageType.FORM_TITLE_UPDATED),
|
193
|
+
then: formChangesMessageData<
|
194
|
+
FormTitleChanges,
|
195
|
+
FormTitleUpdatedMessageData
|
196
|
+
>(formTitleChanges)
|
197
|
+
},
|
198
|
+
{
|
199
|
+
is: Joi.string()
|
200
|
+
.trim()
|
201
|
+
.valid(AuditEventMessageType.FORM_ORGANISATION_UPDATED),
|
202
|
+
then: formChangesMessageData<
|
203
|
+
FormOrganisationChanges,
|
204
|
+
FormOrganisationUpdatedMessageData
|
205
|
+
>(formOrganisationChanges)
|
206
|
+
},
|
207
|
+
{
|
208
|
+
is: Joi.string()
|
209
|
+
.trim()
|
210
|
+
.valid(AuditEventMessageType.FORM_TEAM_NAME_UPDATED),
|
211
|
+
then: formChangesMessageData<
|
212
|
+
FormTeamNameChanges,
|
213
|
+
FormTeamNameUpdatedMessageData
|
214
|
+
>(formTeamNameChanges)
|
215
|
+
},
|
216
|
+
{
|
217
|
+
is: Joi.string()
|
218
|
+
.trim()
|
219
|
+
.valid(AuditEventMessageType.FORM_TEAM_EMAIL_UPDATED),
|
220
|
+
then: formChangesMessageData<
|
221
|
+
FormTeamEmailChanges,
|
222
|
+
FormTeamEmailUpdatedMessageData
|
223
|
+
>(formTeamEmailChanges)
|
224
|
+
},
|
225
|
+
{
|
226
|
+
is: Joi.string()
|
227
|
+
.trim()
|
228
|
+
.valid(AuditEventMessageType.FORM_SUPPORT_PHONE_UPDATED),
|
229
|
+
then: formChangesMessageData<
|
230
|
+
FormSupportPhoneChanges,
|
231
|
+
FormSupportPhoneUpdatedMessageData
|
232
|
+
>(formSupportPhoneChanges)
|
233
|
+
},
|
234
|
+
{
|
235
|
+
is: Joi.string()
|
236
|
+
.trim()
|
237
|
+
.valid(AuditEventMessageType.FORM_SUPPORT_EMAIL_UPDATED),
|
238
|
+
then: formChangesMessageData<
|
239
|
+
FormSupportEmailChanges,
|
240
|
+
FormSupportEmailUpdatedMessageData
|
241
|
+
>(formSupportEmailChanges)
|
242
|
+
},
|
243
|
+
{
|
244
|
+
is: Joi.string()
|
245
|
+
.trim()
|
246
|
+
.valid(AuditEventMessageType.FORM_SUPPORT_ONLINE_UPDATED),
|
247
|
+
then: formChangesMessageData<
|
248
|
+
FormSupportOnlineChanges,
|
249
|
+
FormSupportOnlineUpdatedMessageData
|
250
|
+
>(formSupportOnlineChanges)
|
251
|
+
},
|
252
|
+
{
|
253
|
+
is: Joi.string()
|
254
|
+
.trim()
|
255
|
+
.valid(AuditEventMessageType.FORM_PRIVACY_NOTICE_UPDATED),
|
256
|
+
then: formChangesMessageData<
|
257
|
+
FormPrivacyNoticeChanges,
|
258
|
+
FormPrivacyNoticeUpdatedMessageData
|
259
|
+
>(formPrivacyNoticeChanges)
|
260
|
+
},
|
261
|
+
{
|
262
|
+
is: Joi.string()
|
263
|
+
.trim()
|
264
|
+
.valid(AuditEventMessageType.FORM_NOTIFICATION_EMAIL_UPDATED),
|
265
|
+
then: formChangesMessageData<
|
266
|
+
FormNotificationEmailChanges,
|
267
|
+
FormNotificationEmailUpdatedMessageData
|
268
|
+
>(formNotificationEmailChanges)
|
269
|
+
},
|
270
|
+
{
|
271
|
+
is: Joi.string()
|
272
|
+
.trim()
|
273
|
+
.valid(AuditEventMessageType.FORM_SUBMISSION_GUIDANCE_UPDATED),
|
274
|
+
then: formChangesMessageData<
|
275
|
+
FormSubmissionGuidanceChanges,
|
276
|
+
FormSubmissionGuidanceUpdatedMessageData
|
277
|
+
>(formSubmissionGuidanceChanges)
|
278
|
+
},
|
279
|
+
{
|
280
|
+
is: Joi.string().trim().valid(AuditEventMessageType.FORM_JSON_UPLOADED),
|
281
|
+
then: formChangesMessageData<
|
282
|
+
FormUploadedChanges,
|
283
|
+
FormUploadedMessageData
|
284
|
+
>(formUploadedChanges)
|
285
|
+
},
|
286
|
+
{
|
287
|
+
is: Joi.string().trim().valid(AuditEventMessageType.FORM_UPDATED),
|
288
|
+
then: formUpdatedMessageData
|
289
|
+
}
|
290
|
+
]
|
291
|
+
}),
|
292
|
+
messageCreatedAt: Joi.date().required()
|
293
|
+
})
|
294
|
+
|
295
|
+
export const auditEvent = Joi.object<AuditEvent>().keys({
|
296
|
+
message: messageSchema
|
297
|
+
})
|
298
|
+
|
299
|
+
export const auditRecord = messageSchema.append<AuditRecord>({
|
300
|
+
messageId: Joi.string().uuid().required(),
|
301
|
+
entityId: Joi.string().required(),
|
302
|
+
recordCreatedAt: Joi.date().required()
|
303
|
+
})
|