@defra/forms-model 3.0.713 → 4.0.2

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 (30) hide show
  1. package/dist/module/form/form-definition/constants.js +1 -0
  2. package/dist/module/form/form-definition/constants.js.map +1 -1
  3. package/dist/module/form/form-definition/helpers.js +30 -0
  4. package/dist/module/form/form-definition/helpers.js.map +1 -1
  5. package/dist/module/form/form-definition/index.js +2 -2
  6. package/dist/module/form/form-definition/index.js.map +1 -1
  7. package/dist/module/form/form-editor/index.js +1 -1
  8. package/dist/module/form/form-editor/index.js.map +1 -1
  9. package/dist/module/form/form-submission/index.js +2 -1
  10. package/dist/module/form/form-submission/index.js.map +1 -1
  11. package/dist/module/form/form-submission/types.js.map +1 -1
  12. package/dist/types/common/search/index.d.ts +4 -4
  13. package/dist/types/form/form-definition/constants.d.ts +1 -0
  14. package/dist/types/form/form-definition/constants.d.ts.map +1 -1
  15. package/dist/types/form/form-definition/helpers.d.ts +23 -0
  16. package/dist/types/form/form-definition/helpers.d.ts.map +1 -1
  17. package/dist/types/form/form-definition/index.d.ts +3 -3
  18. package/dist/types/form/form-definition/index.d.ts.map +1 -1
  19. package/dist/types/form/form-editor/index.d.ts +16 -22
  20. package/dist/types/form/form-editor/index.d.ts.map +1 -1
  21. package/dist/types/form/form-submission/index.d.ts.map +1 -1
  22. package/dist/types/form/form-submission/types.d.ts +2 -0
  23. package/dist/types/form/form-submission/types.d.ts.map +1 -1
  24. package/package.json +5 -5
  25. package/src/form/form-definition/constants.ts +2 -0
  26. package/src/form/form-definition/helpers.ts +49 -0
  27. package/src/form/form-definition/index.ts +2 -1
  28. package/src/form/form-editor/index.ts +1 -1
  29. package/src/form/form-submission/index.ts +2 -1
  30. package/src/form/form-submission/types.ts +2 -0
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/form/form-submission/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/form/form-submission/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@defra/forms-model",
3
- "version": "3.0.713",
3
+ "version": "4.0.2",
4
4
  "description": "A hapi plugin providing the model for Defra forms",
5
5
  "homepage": "https://github.com/DEFRA/forms-model#readme",
6
6
  "types": "dist/types/index.d.ts",
@@ -42,7 +42,7 @@
42
42
  "test:watch": "jest --color --watch"
43
43
  },
44
44
  "dependencies": {
45
- "@joi/date": "^2.1.1",
45
+ "@joi/date": "^3.0.0",
46
46
  "marked": "^15.0.12",
47
47
  "nanoid": "^5.0.7",
48
48
  "slug": "^11.0.0",
@@ -54,7 +54,7 @@
54
54
  "@babel/preset-env": "^7.29.7",
55
55
  "@babel/preset-typescript": "^7.29.7",
56
56
  "@types/jest": "^29.5.14",
57
- "@types/node": "^25.9.1",
57
+ "@types/node": "^24.19.2",
58
58
  "@types/slug": "^5.0.9",
59
59
  "@typescript-eslint/eslint-plugin": "^8.34.0",
60
60
  "@typescript-eslint/parser": "^8.27.0",
@@ -69,7 +69,7 @@
69
69
  "globals": "^17.6.0",
70
70
  "husky": "^9.1.7",
71
71
  "jest": "^29.7.0",
72
- "joi": "^17.13.4",
72
+ "joi": "^18.2.9",
73
73
  "joi-to-json": "^4.3.2",
74
74
  "lint-staged": "^17.0.7",
75
75
  "neostandard": "^0.12.2",
@@ -79,7 +79,7 @@
79
79
  "typescript-eslint": "^8.56.1"
80
80
  },
81
81
  "peerDependencies": {
82
- "joi": "^17.0.0"
82
+ "joi": "^18.0.0"
83
83
  },
84
84
  "engines": {
85
85
  "node": "^24.19.0",
@@ -1,2 +1,4 @@
1
1
  export const MIN_NUMBER_OF_REPEAT_ITEMS = 1
2
2
  export const MAX_NUMBER_OF_REPEAT_ITEMS = 200
3
+
4
+ export const FORM_ACTION_COPY = 'copy'
@@ -1,6 +1,7 @@
1
1
  import { ComponentType } from '~/src/components/enums.js'
2
2
  import { type ComponentDef } from '~/src/components/types.js'
3
3
  import { type ConditionListItemRefValueDataV2 } from '~/src/conditions/types.js'
4
+ import { FORM_ACTION_COPY } from '~/src/form/form-definition/constants.js'
4
5
  import {
5
6
  type FormDefinition,
6
7
  type Output
@@ -122,3 +123,51 @@ export function isFeedbackForm(definition: FormDefinition | undefined) {
122
123
  ? definition.pages.some((p) => p.controller === feedback)
123
124
  : false
124
125
  }
126
+
127
+ /**
128
+ * Checks whether the form allows answers to be reused from a previous
129
+ * submission, as set by the metadata.options.allowCopy flag. forms-model does
130
+ * not define metadata.options, so its type is checked here
131
+ * @param {FormDefinition} formDefinition
132
+ * @returns {boolean}
133
+ */
134
+ export function isAllowCopyEnabled(formDefinition: FormDefinition): boolean {
135
+ const options = formDefinition.metadata?.options
136
+
137
+ return (
138
+ typeof options === 'object' &&
139
+ options !== null &&
140
+ 'allowCopy' in options &&
141
+ options.allowCopy === true
142
+ )
143
+ }
144
+
145
+ /**
146
+ * Retrieves the action details of the form submission, if any.
147
+ * @param {{ custom?: { actionName?: string, actionReferenceNumber?: string } }} messageMeta
148
+ * @param {FormDefinition} formDefinition
149
+ * @returns
150
+ */
151
+ export function getFormAction(
152
+ messageMeta:
153
+ | {
154
+ custom?: { actionName?: string; actionReferenceNumber?: string }
155
+ }
156
+ | undefined,
157
+ formDefinition: FormDefinition
158
+ ) {
159
+ // 'Copy' action
160
+ if (
161
+ isAllowCopyEnabled(formDefinition) &&
162
+ messageMeta?.custom?.actionName === FORM_ACTION_COPY &&
163
+ messageMeta.custom.actionReferenceNumber
164
+ ) {
165
+ return {
166
+ name: FORM_ACTION_COPY,
167
+ referenceNumber:
168
+ /** @type {string} */ messageMeta.custom.actionReferenceNumber
169
+ }
170
+ }
171
+
172
+ return undefined
173
+ }
@@ -1,4 +1,4 @@
1
- import JoiDate from '@joi/date'
1
+ import { JoiDate } from '@joi/date'
2
2
  import JoiBase, { type CustomHelpers, type LanguageMessages } from 'joi'
3
3
  import { v4 as uuidV4 } from 'uuid'
4
4
 
@@ -1403,6 +1403,7 @@ export const formDefinitionV2Schema = formDefinitionSchema
1403
1403
  .description('Form definition schema for V2')
1404
1404
 
1405
1405
  export {
1406
+ FORM_ACTION_COPY,
1406
1407
  MAX_NUMBER_OF_REPEAT_ITEMS,
1407
1408
  MIN_NUMBER_OF_REPEAT_ITEMS
1408
1409
  } from '~/src/form/form-definition/constants.js'
@@ -1,4 +1,4 @@
1
- import JoiDate from '@joi/date'
1
+ import { JoiDate } from '@joi/date'
2
2
  import JoiBase, { type ArraySchema, type GetRuleOptions } from 'joi'
3
3
 
4
4
  import { rtrimOnly } from '~/src/common/rtrim-only.js'
@@ -176,7 +176,8 @@ export const saveAndExitV2MessageData = Joi.object<SaveAndExitV2MessageData>()
176
176
  title: Joi.string().required(),
177
177
  status: Joi.string().valid(FormStatus.Draft, FormStatus.Live).required(),
178
178
  isPreview: Joi.boolean().required(),
179
- baseUrl: Joi.string().required()
179
+ baseUrl: Joi.string().required(),
180
+ language: Joi.string().optional()
180
181
  }).label('SaveAndExitForm'),
181
182
  email: Joi.string().required(),
182
183
  auth: Joi.object({
@@ -187,6 +187,7 @@ export interface SaveAndExitV2MessageData {
187
187
  status: FormStatus
188
188
  isPreview: boolean
189
189
  baseUrl: string
190
+ language?: string
190
191
  }
191
192
  email: string
192
193
  auth: {
@@ -245,6 +246,7 @@ export interface SaveAndExitV2Record {
245
246
  status: FormStatus
246
247
  isPreview: boolean
247
248
  baseUrl: string
249
+ language?: string
248
250
  }
249
251
  email: string
250
252
  auth: {