@defra/forms-model 3.0.96 → 3.0.98

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.
@@ -10,6 +10,9 @@ export const teamEmailSchema = Joi.string().email({
10
10
  allow: ['uk']
11
11
  }
12
12
  }).trim().required();
13
+ export const authoredAtSchema = Joi.date().iso().required();
14
+ export const authorIdSchema = Joi.string().uuid().trim().required();
15
+ export const authorDisplayNameSchema = Joi.string().trim().required();
13
16
 
14
17
  /**
15
18
  * Joi schema for `FormMetadataInput` interface
@@ -22,13 +25,24 @@ export const formMetadataInputSchema = Joi.object().keys({
22
25
  teamEmail: teamEmailSchema
23
26
  }).required();
24
27
 
28
+ /**
29
+ * Joi schema for `FormMetadataAuthor` interface
30
+ * @see {@link FormMetadataAuthor}
31
+ */
32
+ export const formMetadataAuthorSchema = Joi.object().keys({
33
+ id: authorIdSchema,
34
+ displayName: authorDisplayNameSchema
35
+ }).required();
36
+
25
37
  /**
26
38
  * Joi schema for `FormMetadataState` interface
27
39
  * @see {@link FormMetadataState}
28
40
  */
29
41
  export const formMetadataStateSchema = Joi.object().keys({
30
- createdAt: Joi.date().iso().required(),
31
- updatedAt: Joi.date().iso().required()
42
+ createdAt: authoredAtSchema,
43
+ createdBy: formMetadataAuthorSchema,
44
+ updatedAt: authoredAtSchema,
45
+ updatedBy: formMetadataAuthorSchema
32
46
  });
33
47
 
34
48
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Joi","organisations","idSchema","string","hex","length","required","titleSchema","max","trim","slugSchema","organisationSchema","valid","teamNameSchema","teamEmailSchema","email","tlds","allow","formMetadataInputSchema","object","keys","title","organisation","teamName","teamEmail","formMetadataStateSchema","createdAt","date","iso","updatedAt","formMetadataSchema","append","id","slug","draft","live"],"sources":["../../../../src/form/form-metadata/index.ts"],"sourcesContent":["import Joi from 'joi'\n\nimport {\n type FormMetadataState,\n type FormMetadata,\n type FormMetadataInput\n} from '~/src/form/form-metadata/types.js'\n\nexport const organisations = [\n 'Animal and Plant Health Agency – APHA',\n 'Centre for Environment, Fisheries and Aquaculture Science – Cefas',\n 'Defra',\n 'Environment Agency',\n 'Forestry Commission',\n 'Marine Management Organisation – MMO',\n 'Natural England',\n 'Rural Payments Agency – RPA',\n 'Veterinary Medicines Directorate – VMD'\n]\n\nexport const idSchema = Joi.string().hex().length(24).required()\nexport const titleSchema = Joi.string().max(250).trim().required()\nexport const slugSchema = Joi.string().required()\nexport const organisationSchema = Joi.string()\n .valid(...organisations)\n .required()\nexport const teamNameSchema = Joi.string().max(100).trim().required()\nexport const teamEmailSchema = Joi.string()\n .email({ tlds: { allow: ['uk'] } })\n .trim()\n .required()\n\n/**\n * Joi schema for `FormMetadataInput` interface\n * @see {@link FormMetadataInput}\n */\nexport const formMetadataInputSchema = Joi.object<FormMetadataInput>()\n .keys({\n title: titleSchema,\n organisation: organisationSchema,\n teamName: teamNameSchema,\n teamEmail: teamEmailSchema\n })\n .required()\n\n/**\n * Joi schema for `FormMetadataState` interface\n * @see {@link FormMetadataState}\n */\nexport const formMetadataStateSchema = Joi.object<FormMetadataState>().keys({\n createdAt: Joi.date().iso().required(),\n updatedAt: Joi.date().iso().required()\n})\n\n/**\n * Joi schema for `FormMetadata` interface\n * @see {@link FormMetadata}\n */\nexport const formMetadataSchema = formMetadataInputSchema.append<FormMetadata>({\n id: idSchema,\n slug: slugSchema,\n draft: formMetadataStateSchema.required(),\n live: formMetadataStateSchema\n})\n"],"mappings":"AAAA,OAAOA,GAAG,MAAM,KAAK;AAQrB,OAAO,MAAMC,aAAa,GAAG,CAC3B,uCAAuC,EACvC,mEAAmE,EACnE,OAAO,EACP,oBAAoB,EACpB,qBAAqB,EACrB,sCAAsC,EACtC,iBAAiB,EACjB,6BAA6B,EAC7B,wCAAwC,CACzC;AAED,OAAO,MAAMC,QAAQ,GAAGF,GAAG,CAACG,MAAM,CAAC,CAAC,CAACC,GAAG,CAAC,CAAC,CAACC,MAAM,CAAC,EAAE,CAAC,CAACC,QAAQ,CAAC,CAAC;AAChE,OAAO,MAAMC,WAAW,GAAGP,GAAG,CAACG,MAAM,CAAC,CAAC,CAACK,GAAG,CAAC,GAAG,CAAC,CAACC,IAAI,CAAC,CAAC,CAACH,QAAQ,CAAC,CAAC;AAClE,OAAO,MAAMI,UAAU,GAAGV,GAAG,CAACG,MAAM,CAAC,CAAC,CAACG,QAAQ,CAAC,CAAC;AACjD,OAAO,MAAMK,kBAAkB,GAAGX,GAAG,CAACG,MAAM,CAAC,CAAC,CAC3CS,KAAK,CAAC,GAAGX,aAAa,CAAC,CACvBK,QAAQ,CAAC,CAAC;AACb,OAAO,MAAMO,cAAc,GAAGb,GAAG,CAACG,MAAM,CAAC,CAAC,CAACK,GAAG,CAAC,GAAG,CAAC,CAACC,IAAI,CAAC,CAAC,CAACH,QAAQ,CAAC,CAAC;AACrE,OAAO,MAAMQ,eAAe,GAAGd,GAAG,CAACG,MAAM,CAAC,CAAC,CACxCY,KAAK,CAAC;EAAEC,IAAI,EAAE;IAAEC,KAAK,EAAE,CAAC,IAAI;EAAE;AAAE,CAAC,CAAC,CAClCR,IAAI,CAAC,CAAC,CACNH,QAAQ,CAAC,CAAC;;AAEb;AACA;AACA;AACA;AACA,OAAO,MAAMY,uBAAuB,GAAGlB,GAAG,CAACmB,MAAM,CAAoB,CAAC,CACnEC,IAAI,CAAC;EACJC,KAAK,EAAEd,WAAW;EAClBe,YAAY,EAAEX,kBAAkB;EAChCY,QAAQ,EAAEV,cAAc;EACxBW,SAAS,EAAEV;AACb,CAAC,CAAC,CACDR,QAAQ,CAAC,CAAC;;AAEb;AACA;AACA;AACA;AACA,OAAO,MAAMmB,uBAAuB,GAAGzB,GAAG,CAACmB,MAAM,CAAoB,CAAC,CAACC,IAAI,CAAC;EAC1EM,SAAS,EAAE1B,GAAG,CAAC2B,IAAI,CAAC,CAAC,CAACC,GAAG,CAAC,CAAC,CAACtB,QAAQ,CAAC,CAAC;EACtCuB,SAAS,EAAE7B,GAAG,CAAC2B,IAAI,CAAC,CAAC,CAACC,GAAG,CAAC,CAAC,CAACtB,QAAQ,CAAC;AACvC,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA,OAAO,MAAMwB,kBAAkB,GAAGZ,uBAAuB,CAACa,MAAM,CAAe;EAC7EC,EAAE,EAAE9B,QAAQ;EACZ+B,IAAI,EAAEvB,UAAU;EAChBwB,KAAK,EAAET,uBAAuB,CAACnB,QAAQ,CAAC,CAAC;EACzC6B,IAAI,EAAEV;AACR,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["Joi","organisations","idSchema","string","hex","length","required","titleSchema","max","trim","slugSchema","organisationSchema","valid","teamNameSchema","teamEmailSchema","email","tlds","allow","authoredAtSchema","date","iso","authorIdSchema","uuid","authorDisplayNameSchema","formMetadataInputSchema","object","keys","title","organisation","teamName","teamEmail","formMetadataAuthorSchema","id","displayName","formMetadataStateSchema","createdAt","createdBy","updatedAt","updatedBy","formMetadataSchema","append","slug","draft","live"],"sources":["../../../../src/form/form-metadata/index.ts"],"sourcesContent":["import Joi from 'joi'\n\nimport {\n type FormMetadata,\n type FormMetadataInput,\n type FormMetadataState,\n type FormMetadataAuthor\n} from '~/src/form/form-metadata/types.js'\n\nexport const organisations = [\n 'Animal and Plant Health Agency – APHA',\n 'Centre for Environment, Fisheries and Aquaculture Science – Cefas',\n 'Defra',\n 'Environment Agency',\n 'Forestry Commission',\n 'Marine Management Organisation – MMO',\n 'Natural England',\n 'Rural Payments Agency – RPA',\n 'Veterinary Medicines Directorate – VMD'\n]\n\nexport const idSchema = Joi.string().hex().length(24).required()\nexport const titleSchema = Joi.string().max(250).trim().required()\nexport const slugSchema = Joi.string().required()\nexport const organisationSchema = Joi.string()\n .valid(...organisations)\n .required()\nexport const teamNameSchema = Joi.string().max(100).trim().required()\nexport const teamEmailSchema = Joi.string()\n .email({ tlds: { allow: ['uk'] } })\n .trim()\n .required()\n\nexport const authoredAtSchema = Joi.date().iso().required()\nexport const authorIdSchema = Joi.string().uuid().trim().required()\nexport const authorDisplayNameSchema = Joi.string().trim().required()\n\n/**\n * Joi schema for `FormMetadataInput` interface\n * @see {@link FormMetadataInput}\n */\nexport const formMetadataInputSchema = Joi.object<FormMetadataInput>()\n .keys({\n title: titleSchema,\n organisation: organisationSchema,\n teamName: teamNameSchema,\n teamEmail: teamEmailSchema\n })\n .required()\n\n/**\n * Joi schema for `FormMetadataAuthor` interface\n * @see {@link FormMetadataAuthor}\n */\nexport const formMetadataAuthorSchema = Joi.object<FormMetadataAuthor>()\n .keys({\n id: authorIdSchema,\n displayName: authorDisplayNameSchema\n })\n .required()\n\n/**\n * Joi schema for `FormMetadataState` interface\n * @see {@link FormMetadataState}\n */\nexport const formMetadataStateSchema = Joi.object<FormMetadataState>().keys({\n createdAt: authoredAtSchema,\n createdBy: formMetadataAuthorSchema,\n updatedAt: authoredAtSchema,\n updatedBy: formMetadataAuthorSchema\n})\n\n/**\n * Joi schema for `FormMetadata` interface\n * @see {@link FormMetadata}\n */\nexport const formMetadataSchema = formMetadataInputSchema.append<FormMetadata>({\n id: idSchema,\n slug: slugSchema,\n draft: formMetadataStateSchema.required(),\n live: formMetadataStateSchema\n})\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../../src/form/form-metadata/types.ts"],"sourcesContent":["import { formMetadataSchema } from '~/src/form/form-metadata/index.js'\n\n/**\n * Interface for metadata state (draft & live)\n */\nexport interface FormMetadataState {\n /**\n * The date the form state was created\n */\n createdAt: Date\n\n /**\n * The date the form state was last updated\n */\n updatedAt: Date\n}\n\n/**\n * Interface for `formMetadataSchema` Joi schema\n * @see {@link formMetadataSchema}\n */\nexport interface FormMetadata {\n /**\n * The id of the form\n */\n id: string\n\n /**\n * The human-readable slug id of the form\n */\n slug: string\n\n /**\n * The human-readable title of the form\n */\n title: string\n\n /**\n * The organisation this form belongs to\n */\n organisation: string\n\n /**\n * The name of the team who own this form\n */\n teamName: string\n\n /**\n * The email of the team who own this form\n */\n teamEmail: string\n\n /**\n * The draft state of the form\n */\n draft: FormMetadataState\n\n /**\n * The live state of the form\n */\n live?: FormMetadataState\n}\n\nexport type FormByIdInput = Pick<FormMetadata, 'id'>\nexport type FormBySlugInput = Pick<FormMetadata, 'slug'>\nexport type FormMetadataDocument = Omit<FormMetadata, 'id'>\nexport type FormMetadataInput = Omit<\n FormMetadata,\n 'id' | 'slug' | 'draft' | 'live'\n>\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../../src/form/form-metadata/types.ts"],"sourcesContent":["import { formMetadataSchema } from '~/src/form/form-metadata/index.js'\n\n/**\n * Interface for author (createdBy and updatedBy)\n */\nexport interface FormMetadataAuthor {\n /**\n * The ID of the user\n */\n id: string\n\n /**\n * The display name of the user\n */\n displayName: string\n}\n\n/**\n * Interface for metadata state (draft & live)\n */\nexport interface FormMetadataState {\n /**\n * The date the form state was created\n */\n createdAt: Date\n\n /**\n * The author who created the state\n */\n createdBy: FormMetadataAuthor\n\n /**\n * The date the form state was last updated\n */\n updatedAt: Date\n\n /**\n * The author who last updated the state\n */\n updatedBy: FormMetadataAuthor\n}\n\n/**\n * Interface for `formMetadataSchema` Joi schema\n * @see {@link formMetadataSchema}\n */\nexport interface FormMetadata {\n /**\n * The id of the form\n */\n id: string\n\n /**\n * The human-readable slug id of the form\n */\n slug: string\n\n /**\n * The human-readable title of the form\n */\n title: string\n\n /**\n * The organisation this form belongs to\n */\n organisation: string\n\n /**\n * The name of the team who own this form\n */\n teamName: string\n\n /**\n * The email of the team who own this form\n */\n teamEmail: string\n\n /**\n * The draft state of the form\n */\n draft: FormMetadataState\n\n /**\n * The live state of the form\n */\n live?: FormMetadataState\n}\n\nexport type FormByIdInput = Pick<FormMetadata, 'id'>\nexport type FormBySlugInput = Pick<FormMetadata, 'slug'>\nexport type FormMetadataDocument = Omit<FormMetadata, 'id'>\nexport type FormMetadataInput = Omit<\n FormMetadata,\n 'id' | 'slug' | 'draft' | 'live'\n>\n"],"mappings":"","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import Joi from 'joi';
2
- import { type FormMetadataState, type FormMetadata, type FormMetadataInput } from '../../form/form-metadata/types.js';
2
+ import { type FormMetadata, type FormMetadataInput, type FormMetadataState, type FormMetadataAuthor } from '../../form/form-metadata/types.js';
3
3
  export declare const organisations: string[];
4
4
  export declare const idSchema: Joi.StringSchema<string>;
5
5
  export declare const titleSchema: Joi.StringSchema<string>;
@@ -7,11 +7,19 @@ export declare const slugSchema: Joi.StringSchema<string>;
7
7
  export declare const organisationSchema: Joi.StringSchema<string>;
8
8
  export declare const teamNameSchema: Joi.StringSchema<string>;
9
9
  export declare const teamEmailSchema: Joi.StringSchema<string>;
10
+ export declare const authoredAtSchema: Joi.DateSchema<Date>;
11
+ export declare const authorIdSchema: Joi.StringSchema<string>;
12
+ export declare const authorDisplayNameSchema: Joi.StringSchema<string>;
10
13
  /**
11
14
  * Joi schema for `FormMetadataInput` interface
12
15
  * @see {@link FormMetadataInput}
13
16
  */
14
17
  export declare const formMetadataInputSchema: Joi.ObjectSchema<FormMetadataInput>;
18
+ /**
19
+ * Joi schema for `FormMetadataAuthor` interface
20
+ * @see {@link FormMetadataAuthor}
21
+ */
22
+ export declare const formMetadataAuthorSchema: Joi.ObjectSchema<FormMetadataAuthor>;
15
23
  /**
16
24
  * Joi schema for `FormMetadataState` interface
17
25
  * @see {@link FormMetadataState}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/form/form-metadata/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACvB,MAAM,mCAAmC,CAAA;AAE1C,eAAO,MAAM,aAAa,UAUzB,CAAA;AAED,eAAO,MAAM,QAAQ,0BAA2C,CAAA;AAChE,eAAO,MAAM,WAAW,0BAA0C,CAAA;AAClE,eAAO,MAAM,UAAU,0BAA0B,CAAA;AACjD,eAAO,MAAM,kBAAkB,0BAElB,CAAA;AACb,eAAO,MAAM,cAAc,0BAA0C,CAAA;AACrE,eAAO,MAAM,eAAe,0BAGf,CAAA;AAEb;;;GAGG;AACH,eAAO,MAAM,uBAAuB,qCAOvB,CAAA;AAEb;;;GAGG;AACH,eAAO,MAAM,uBAAuB,qCAGlC,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,gCAK7B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/form/form-metadata/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACxB,MAAM,mCAAmC,CAAA;AAE1C,eAAO,MAAM,aAAa,UAUzB,CAAA;AAED,eAAO,MAAM,QAAQ,0BAA2C,CAAA;AAChE,eAAO,MAAM,WAAW,0BAA0C,CAAA;AAClE,eAAO,MAAM,UAAU,0BAA0B,CAAA;AACjD,eAAO,MAAM,kBAAkB,0BAElB,CAAA;AACb,eAAO,MAAM,cAAc,0BAA0C,CAAA;AACrE,eAAO,MAAM,eAAe,0BAGf,CAAA;AAEb,eAAO,MAAM,gBAAgB,sBAA8B,CAAA;AAC3D,eAAO,MAAM,cAAc,0BAAwC,CAAA;AACnE,eAAO,MAAM,uBAAuB,0BAAiC,CAAA;AAErE;;;GAGG;AACH,eAAO,MAAM,uBAAuB,qCAOvB,CAAA;AAEb;;;GAGG;AACH,eAAO,MAAM,wBAAwB,sCAKxB,CAAA;AAEb;;;GAGG;AACH,eAAO,MAAM,uBAAuB,qCAKlC,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,gCAK7B,CAAA"}
@@ -1,3 +1,16 @@
1
+ /**
2
+ * Interface for author (createdBy and updatedBy)
3
+ */
4
+ export interface FormMetadataAuthor {
5
+ /**
6
+ * The ID of the user
7
+ */
8
+ id: string;
9
+ /**
10
+ * The display name of the user
11
+ */
12
+ displayName: string;
13
+ }
1
14
  /**
2
15
  * Interface for metadata state (draft & live)
3
16
  */
@@ -6,10 +19,18 @@ export interface FormMetadataState {
6
19
  * The date the form state was created
7
20
  */
8
21
  createdAt: Date;
22
+ /**
23
+ * The author who created the state
24
+ */
25
+ createdBy: FormMetadataAuthor;
9
26
  /**
10
27
  * The date the form state was last updated
11
28
  */
12
29
  updatedAt: Date;
30
+ /**
31
+ * The author who last updated the state
32
+ */
33
+ updatedBy: FormMetadataAuthor;
13
34
  }
14
35
  /**
15
36
  * Interface for `formMetadataSchema` Joi schema
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/form/form-metadata/types.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,SAAS,EAAE,IAAI,CAAA;IAEf;;OAEG;IACH,SAAS,EAAE,IAAI,CAAA;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAA;IAEV;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IAEb;;OAEG;IACH,YAAY,EAAE,MAAM,CAAA;IAEpB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,KAAK,EAAE,iBAAiB,CAAA;IAExB;;OAEG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAA;CACzB;AAED,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;AACpD,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;AACxD,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;AAC3D,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAClC,YAAY,EACZ,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CACjC,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/form/form-metadata/types.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,EAAE,EAAE,MAAM,CAAA;IAEV;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,SAAS,EAAE,IAAI,CAAA;IAEf;;OAEG;IACH,SAAS,EAAE,kBAAkB,CAAA;IAE7B;;OAEG;IACH,SAAS,EAAE,IAAI,CAAA;IAEf;;OAEG;IACH,SAAS,EAAE,kBAAkB,CAAA;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAA;IAEV;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IAEb;;OAEG;IACH,YAAY,EAAE,MAAM,CAAA;IAEpB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,KAAK,EAAE,iBAAiB,CAAA;IAExB;;OAEG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAA;CACzB;AAED,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;AACpD,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;AACxD,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;AAC3D,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAClC,YAAY,EACZ,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CACjC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@defra/forms-model",
3
- "version": "3.0.96",
3
+ "version": "3.0.98",
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
  "repository": {
@@ -1,9 +1,10 @@
1
1
  import Joi from 'joi'
2
2
 
3
3
  import {
4
- type FormMetadataState,
5
4
  type FormMetadata,
6
- type FormMetadataInput
5
+ type FormMetadataInput,
6
+ type FormMetadataState,
7
+ type FormMetadataAuthor
7
8
  } from '~/src/form/form-metadata/types.js'
8
9
 
9
10
  export const organisations = [
@@ -30,6 +31,10 @@ export const teamEmailSchema = Joi.string()
30
31
  .trim()
31
32
  .required()
32
33
 
34
+ export const authoredAtSchema = Joi.date().iso().required()
35
+ export const authorIdSchema = Joi.string().uuid().trim().required()
36
+ export const authorDisplayNameSchema = Joi.string().trim().required()
37
+
33
38
  /**
34
39
  * Joi schema for `FormMetadataInput` interface
35
40
  * @see {@link FormMetadataInput}
@@ -43,13 +48,26 @@ export const formMetadataInputSchema = Joi.object<FormMetadataInput>()
43
48
  })
44
49
  .required()
45
50
 
51
+ /**
52
+ * Joi schema for `FormMetadataAuthor` interface
53
+ * @see {@link FormMetadataAuthor}
54
+ */
55
+ export const formMetadataAuthorSchema = Joi.object<FormMetadataAuthor>()
56
+ .keys({
57
+ id: authorIdSchema,
58
+ displayName: authorDisplayNameSchema
59
+ })
60
+ .required()
61
+
46
62
  /**
47
63
  * Joi schema for `FormMetadataState` interface
48
64
  * @see {@link FormMetadataState}
49
65
  */
50
66
  export const formMetadataStateSchema = Joi.object<FormMetadataState>().keys({
51
- createdAt: Joi.date().iso().required(),
52
- updatedAt: Joi.date().iso().required()
67
+ createdAt: authoredAtSchema,
68
+ createdBy: formMetadataAuthorSchema,
69
+ updatedAt: authoredAtSchema,
70
+ updatedBy: formMetadataAuthorSchema
53
71
  })
54
72
 
55
73
  /**
@@ -1,5 +1,20 @@
1
1
  import { formMetadataSchema } from '~/src/form/form-metadata/index.js'
2
2
 
3
+ /**
4
+ * Interface for author (createdBy and updatedBy)
5
+ */
6
+ export interface FormMetadataAuthor {
7
+ /**
8
+ * The ID of the user
9
+ */
10
+ id: string
11
+
12
+ /**
13
+ * The display name of the user
14
+ */
15
+ displayName: string
16
+ }
17
+
3
18
  /**
4
19
  * Interface for metadata state (draft & live)
5
20
  */
@@ -9,10 +24,20 @@ export interface FormMetadataState {
9
24
  */
10
25
  createdAt: Date
11
26
 
27
+ /**
28
+ * The author who created the state
29
+ */
30
+ createdBy: FormMetadataAuthor
31
+
12
32
  /**
13
33
  * The date the form state was last updated
14
34
  */
15
35
  updatedAt: Date
36
+
37
+ /**
38
+ * The author who last updated the state
39
+ */
40
+ updatedBy: FormMetadataAuthor
16
41
  }
17
42
 
18
43
  /**