@defra/forms-model 3.0.429 → 3.0.431

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.
Files changed (49) hide show
  1. package/README.md +163 -1
  2. package/dist/module/common/pagination/index.js +2 -2
  3. package/dist/module/common/pagination/index.js.map +1 -1
  4. package/dist/module/common/search/index.js +4 -4
  5. package/dist/module/common/search/index.js.map +1 -1
  6. package/dist/module/common/sorting/index.js +2 -2
  7. package/dist/module/common/sorting/index.js.map +1 -1
  8. package/dist/module/form/form-definition/index.js +156 -156
  9. package/dist/module/form/form-definition/index.js.map +1 -1
  10. package/dist/module/form/form-editor/index.js +47 -37
  11. package/dist/module/form/form-editor/index.js.map +1 -1
  12. package/dist/module/form/form-editor/types.js.map +1 -1
  13. package/dist/module/form/form-manager/index.js +3 -3
  14. package/dist/module/form/form-manager/index.js.map +1 -1
  15. package/dist/module/form/form-metadata/index.js +34 -34
  16. package/dist/module/form/form-metadata/index.js.map +1 -1
  17. package/dist/module/form/form-submission/index.js +13 -13
  18. package/dist/module/form/form-submission/index.js.map +1 -1
  19. package/dist/module/types/joi-to-json.d.js +2 -0
  20. package/dist/module/types/joi-to-json.d.js.map +1 -0
  21. package/dist/types/common/pagination/index.d.ts.map +1 -1
  22. package/dist/types/common/search/index.d.ts.map +1 -1
  23. package/dist/types/common/sorting/index.d.ts.map +1 -1
  24. package/dist/types/form/form-definition/index.d.ts.map +1 -1
  25. package/dist/types/form/form-editor/index.d.ts +17 -7
  26. package/dist/types/form/form-editor/index.d.ts.map +1 -1
  27. package/dist/types/form/form-editor/types.d.ts +45 -1
  28. package/dist/types/form/form-editor/types.d.ts.map +1 -1
  29. package/dist/types/form/form-manager/index.d.ts.map +1 -1
  30. package/dist/types/form/form-metadata/index.d.ts.map +1 -1
  31. package/dist/types/form/form-submission/index.d.ts.map +1 -1
  32. package/package.json +6 -4
  33. package/scripts/generate-schemas.js +238 -0
  34. package/scripts/schema-modules/constants.js +39 -0
  35. package/scripts/schema-modules/schema-processors.js +109 -0
  36. package/scripts/schema-modules/schema-simplifiers.js +351 -0
  37. package/scripts/schema-modules/title-processors.js +327 -0
  38. package/scripts/schema-modules/types.js +21 -0
  39. package/scripts/schema-modules/utils.js +41 -0
  40. package/src/common/pagination/index.ts +8 -1
  41. package/src/common/search/index.ts +17 -3
  42. package/src/common/sorting/index.ts +8 -2
  43. package/src/form/form-definition/index.ts +567 -238
  44. package/src/form/form-editor/index.ts +207 -24
  45. package/src/form/form-editor/types.ts +69 -0
  46. package/src/form/form-manager/index.ts +11 -2
  47. package/src/form/form-metadata/index.ts +118 -40
  48. package/src/form/form-submission/index.ts +33 -10
  49. package/src/types/joi-to-json.d.ts +15 -0
@@ -11,22 +11,36 @@ import {
11
11
  * @see {@link SubmitRecord}
12
12
  */
13
13
  export const formSubmitRecordSchema = Joi.object<SubmitRecord>({
14
- name: Joi.string().required(),
15
- title: Joi.string().required(),
16
- value: Joi.string().required().allow('')
17
- })
14
+ name: Joi.string()
15
+ .required()
16
+ .description('Field identifier matching the component name'),
17
+ title: Joi.string()
18
+ .required()
19
+ .description('Human-readable label for the field'),
20
+ value: Joi.string()
21
+ .required()
22
+ .allow('')
23
+ .description('User-submitted value for the field, may be empty')
24
+ }).description('Individual field value in a form submission')
18
25
 
19
26
  /**
20
27
  * Joi schema for `SubmitRecordset` interface
21
28
  * @see {@link SubmitRecordset}
22
29
  */
23
30
  export const formSubmitRecordsetSchema = Joi.object<SubmitRecordset>({
24
- name: Joi.string().required(),
25
- title: Joi.string().required(),
31
+ name: Joi.string()
32
+ .required()
33
+ .description('Identifier for the repeatable section'),
34
+ title: Joi.string()
35
+ .required()
36
+ .description('Human-readable title for the repeatable section'),
26
37
  value: Joi.array<SubmitRecord[]>()
27
38
  .items(Joi.array<SubmitRecord>().items(formSubmitRecordSchema).required())
28
39
  .required()
29
- })
40
+ .description(
41
+ 'Array of record arrays, each representing a repeated instance'
42
+ )
43
+ }).description('Collection of repeated field values from a repeatable section')
30
44
 
31
45
  /**
32
46
  * Joi schema for `SubmitPayload` interface
@@ -34,11 +48,20 @@ export const formSubmitRecordsetSchema = Joi.object<SubmitRecordset>({
34
48
  */
35
49
  export const formSubmitPayloadSchema = Joi.object<SubmitPayload>()
36
50
  .keys({
37
- retrievalKey: Joi.string().required(),
38
- sessionId: Joi.string().required(),
39
- main: Joi.array<SubmitRecord>().items(formSubmitRecordSchema).required(),
51
+ retrievalKey: Joi.string()
52
+ .required()
53
+ .description('Unique key to retrieve this submission later'),
54
+ sessionId: Joi.string()
55
+ .required()
56
+ .description('User session identifier for tracking and security'),
57
+ main: Joi.array<SubmitRecord>()
58
+ .items(formSubmitRecordSchema)
59
+ .required()
60
+ .description('Main (non-repeating) field values from the form'),
40
61
  repeaters: Joi.array<SubmitRecordset>()
41
62
  .items(formSubmitRecordsetSchema)
42
63
  .required()
64
+ .description('Repeatable section values from the form')
43
65
  })
44
66
  .required()
67
+ .description('Complete form submission payload structure with all form data')
@@ -0,0 +1,15 @@
1
+ declare module 'joi-to-json' {
2
+ import { type Schema } from 'joi'
3
+
4
+ /**
5
+ * Converts a Joi schema to a JSON Schema
6
+ */
7
+ function parse(
8
+ joiSchema: Schema,
9
+ type?: string,
10
+ definitions?: object,
11
+ parserOptions?: object
12
+ ): object
13
+
14
+ export = parse
15
+ }