@defra/forms-model 3.0.467 → 3.0.469

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.
@@ -64,7 +64,7 @@ function convertConditionRefDataFromV2(model, condition, coordinator) {
64
64
  throw Error('Component not found');
65
65
  }
66
66
  return {
67
- conditionName: refCondition.name,
67
+ conditionName: refCondition.id,
68
68
  conditionDisplayName: refCondition.displayName,
69
69
  coordinator
70
70
  };
@@ -83,10 +83,10 @@ export function convertConditionWrapperFromV2(conditionWrapper, model) {
83
83
  coordinator = conditionWrapper.coordinator;
84
84
  }
85
85
  const newConditionWrapper = {
86
- name: conditionWrapper.name,
86
+ name: conditionWrapper.id,
87
87
  displayName: conditionWrapper.displayName,
88
88
  value: {
89
- name: conditionWrapper.name,
89
+ name: conditionWrapper.id,
90
90
  conditions: conditionWrapper.conditions.map((condition, index) => {
91
91
  let newCondition;
92
92
  if (isConditionDataV2(condition)) {
@@ -1 +1 @@
1
- {"version":3,"file":"migration.js","names":["ConditionType","isConditionListItemRefValueDataV2","value","type","ListItemRef","isConditionStringValueDataV2","StringValue","getListItem","model","listId","itemId","foundList","getListById","Error","item","items","find","id","createConditionValueDataFromListItemRefV2","refValue","display","text","Value","toString","createConditionValueDataFromStringValueDataV2","isConditionDataV2","condition","convertConditionDataV2","coordinator","component","getComponentById","componentId","newValue","field","name","title","operator","convertConditionRefDataFromV2","refCondition","getConditionById","conditionId","conditionName","conditionDisplayName","displayName","isConditionWrapperV2","wrapper","Array","isArray","conditions","isConditionWrapper","convertConditionWrapperFromV2","conditionWrapper","length","newConditionWrapper","map","index","newCondition","undefined"],"sources":["../../../src/conditions/migration.ts"],"sourcesContent":["import {\n type ComponentDef,\n type ConditionalComponentType\n} from '~/src/components/types.js'\nimport { ConditionType, type Coordinator } from '~/src/conditions/enums.js'\nimport {\n type ConditionData,\n type ConditionDataV2,\n type ConditionListItemRefValueDataV2,\n type ConditionRefData,\n type ConditionRefDataV2,\n type ConditionStringValueDataV2,\n type ConditionValueData,\n type RelativeDateValueData\n} from '~/src/conditions/types.js'\nimport {\n type ConditionWrapper,\n type ConditionWrapperV2,\n type List\n} from '~/src/form/form-definition/types.js'\n\nfunction isConditionListItemRefValueDataV2(\n value:\n | ConditionListItemRefValueDataV2\n | ConditionStringValueDataV2\n | RelativeDateValueData\n): value is ConditionListItemRefValueDataV2 {\n return value.type === ConditionType.ListItemRef\n}\n\nfunction isConditionStringValueDataV2(\n value:\n | ConditionListItemRefValueDataV2\n | ConditionStringValueDataV2\n | RelativeDateValueData\n): value is ConditionStringValueDataV2 {\n return value.type === ConditionType.StringValue\n}\n\nfunction getListItem(model: RuntimeFormModel, listId: string, itemId: string) {\n const foundList = model.getListById(listId)\n\n if (!foundList) {\n throw Error('List not found')\n }\n\n const item = foundList.items.find((item) => item.id === itemId)\n\n if (!item) {\n throw Error('List item not found')\n }\n\n return item\n}\n\nfunction createConditionValueDataFromListItemRefV2(\n value: ConditionListItemRefValueDataV2,\n model: RuntimeFormModel\n): ConditionValueData {\n const refValue = getListItem(model, value.listId, value.itemId)\n\n return {\n display: refValue.text,\n type: ConditionType.Value,\n value: refValue.value.toString()\n }\n}\n\nfunction createConditionValueDataFromStringValueDataV2(\n value: ConditionStringValueDataV2\n): ConditionValueData {\n return {\n type: ConditionType.Value,\n value: value.value,\n display: value.value\n }\n}\n\nfunction isConditionDataV2(\n condition: ConditionDataV2 | ConditionRefDataV2\n): condition is ConditionDataV2 {\n return 'componentId' in condition\n}\n\nfunction convertConditionDataV2(\n model: RuntimeFormModel,\n condition: ConditionDataV2,\n coordinator: Coordinator | undefined\n): ConditionData {\n const component = model.getComponentById(condition.componentId)\n\n if (!component) {\n throw Error('Component not found')\n }\n\n let newValue\n if (isConditionListItemRefValueDataV2(condition.value)) {\n newValue = createConditionValueDataFromListItemRefV2(condition.value, model)\n } else if (isConditionStringValueDataV2(condition.value)) {\n newValue = createConditionValueDataFromStringValueDataV2(condition.value)\n } else {\n newValue = condition.value\n }\n\n return {\n field: {\n name: component.name,\n type: component.type as ConditionalComponentType /** @todo fix this */,\n display: component.title\n },\n operator: condition.operator,\n value: newValue,\n coordinator\n }\n}\n\nfunction convertConditionRefDataFromV2(\n model: RuntimeFormModel,\n condition: ConditionRefDataV2,\n coordinator: Coordinator | undefined\n): ConditionRefData {\n const refCondition = model.getConditionById(condition.conditionId)\n\n if (!refCondition) {\n throw Error('Component not found')\n }\n\n return {\n conditionName: refCondition.name,\n conditionDisplayName: refCondition.displayName,\n coordinator\n }\n}\n\nexport function isConditionWrapperV2(\n wrapper: ConditionWrapper | ConditionWrapperV2\n): wrapper is ConditionWrapperV2 {\n return Array.isArray((wrapper as ConditionWrapperV2).conditions)\n}\n\nexport function isConditionWrapper(\n wrapper: ConditionWrapper | ConditionWrapperV2\n): wrapper is ConditionWrapper {\n return !isConditionWrapperV2(wrapper)\n}\n\nexport function convertConditionWrapperFromV2(\n conditionWrapper: ConditionWrapperV2,\n model: RuntimeFormModel\n): ConditionWrapper {\n let coordinator\n\n if (conditionWrapper.conditions.length > 1 && !conditionWrapper.coordinator) {\n throw new Error('Coordinator is required for multiple conditions')\n } else {\n coordinator = conditionWrapper.coordinator\n }\n\n const newConditionWrapper: ConditionWrapper = {\n name: conditionWrapper.name,\n displayName: conditionWrapper.displayName,\n value: {\n name: conditionWrapper.name,\n conditions: conditionWrapper.conditions.map((condition, index) => {\n let newCondition: ConditionData | ConditionRefData\n\n if (isConditionDataV2(condition)) {\n newCondition = convertConditionDataV2(model, condition, coordinator)\n } else {\n newCondition = convertConditionRefDataFromV2(\n model,\n condition,\n index > 0 ? coordinator : undefined\n )\n }\n\n return newCondition\n })\n }\n }\n\n return newConditionWrapper\n}\n\nexport interface RuntimeFormModel {\n getListById: (listId: string) => List | undefined\n getComponentById: (componentId: string) => ComponentDef | undefined\n getConditionById: (conditionId: string) => ConditionWrapperV2 | undefined\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"migration.js","names":["ConditionType","isConditionListItemRefValueDataV2","value","type","ListItemRef","isConditionStringValueDataV2","StringValue","getListItem","model","listId","itemId","foundList","getListById","Error","item","items","find","id","createConditionValueDataFromListItemRefV2","refValue","display","text","Value","toString","createConditionValueDataFromStringValueDataV2","isConditionDataV2","condition","convertConditionDataV2","coordinator","component","getComponentById","componentId","newValue","field","name","title","operator","convertConditionRefDataFromV2","refCondition","getConditionById","conditionId","conditionName","conditionDisplayName","displayName","isConditionWrapperV2","wrapper","Array","isArray","conditions","isConditionWrapper","convertConditionWrapperFromV2","conditionWrapper","length","newConditionWrapper","map","index","newCondition","undefined"],"sources":["../../../src/conditions/migration.ts"],"sourcesContent":["import {\n type ComponentDef,\n type ConditionalComponentType\n} from '~/src/components/types.js'\nimport { ConditionType, type Coordinator } from '~/src/conditions/enums.js'\nimport {\n type ConditionData,\n type ConditionDataV2,\n type ConditionListItemRefValueDataV2,\n type ConditionRefData,\n type ConditionRefDataV2,\n type ConditionStringValueDataV2,\n type ConditionValueData,\n type RelativeDateValueData\n} from '~/src/conditions/types.js'\nimport {\n type ConditionWrapper,\n type ConditionWrapperV2,\n type List\n} from '~/src/form/form-definition/types.js'\n\nfunction isConditionListItemRefValueDataV2(\n value:\n | ConditionListItemRefValueDataV2\n | ConditionStringValueDataV2\n | RelativeDateValueData\n): value is ConditionListItemRefValueDataV2 {\n return value.type === ConditionType.ListItemRef\n}\n\nfunction isConditionStringValueDataV2(\n value:\n | ConditionListItemRefValueDataV2\n | ConditionStringValueDataV2\n | RelativeDateValueData\n): value is ConditionStringValueDataV2 {\n return value.type === ConditionType.StringValue\n}\n\nfunction getListItem(model: RuntimeFormModel, listId: string, itemId: string) {\n const foundList = model.getListById(listId)\n\n if (!foundList) {\n throw Error('List not found')\n }\n\n const item = foundList.items.find((item) => item.id === itemId)\n\n if (!item) {\n throw Error('List item not found')\n }\n\n return item\n}\n\nfunction createConditionValueDataFromListItemRefV2(\n value: ConditionListItemRefValueDataV2,\n model: RuntimeFormModel\n): ConditionValueData {\n const refValue = getListItem(model, value.listId, value.itemId)\n\n return {\n display: refValue.text,\n type: ConditionType.Value,\n value: refValue.value.toString()\n }\n}\n\nfunction createConditionValueDataFromStringValueDataV2(\n value: ConditionStringValueDataV2\n): ConditionValueData {\n return {\n type: ConditionType.Value,\n value: value.value,\n display: value.value\n }\n}\n\nfunction isConditionDataV2(\n condition: ConditionDataV2 | ConditionRefDataV2\n): condition is ConditionDataV2 {\n return 'componentId' in condition\n}\n\nfunction convertConditionDataV2(\n model: RuntimeFormModel,\n condition: ConditionDataV2,\n coordinator: Coordinator | undefined\n): ConditionData {\n const component = model.getComponentById(condition.componentId)\n\n if (!component) {\n throw Error('Component not found')\n }\n\n let newValue\n if (isConditionListItemRefValueDataV2(condition.value)) {\n newValue = createConditionValueDataFromListItemRefV2(condition.value, model)\n } else if (isConditionStringValueDataV2(condition.value)) {\n newValue = createConditionValueDataFromStringValueDataV2(condition.value)\n } else {\n newValue = condition.value\n }\n\n return {\n field: {\n name: component.name,\n type: component.type as ConditionalComponentType /** @todo fix this */,\n display: component.title\n },\n operator: condition.operator,\n value: newValue,\n coordinator\n }\n}\n\nfunction convertConditionRefDataFromV2(\n model: RuntimeFormModel,\n condition: ConditionRefDataV2,\n coordinator: Coordinator | undefined\n): ConditionRefData {\n const refCondition = model.getConditionById(condition.conditionId)\n\n if (!refCondition) {\n throw Error('Component not found')\n }\n\n return {\n conditionName: refCondition.id,\n conditionDisplayName: refCondition.displayName,\n coordinator\n }\n}\n\nexport function isConditionWrapperV2(\n wrapper: ConditionWrapper | ConditionWrapperV2\n): wrapper is ConditionWrapperV2 {\n return Array.isArray((wrapper as ConditionWrapperV2).conditions)\n}\n\nexport function isConditionWrapper(\n wrapper: ConditionWrapper | ConditionWrapperV2\n): wrapper is ConditionWrapper {\n return !isConditionWrapperV2(wrapper)\n}\n\nexport function convertConditionWrapperFromV2(\n conditionWrapper: ConditionWrapperV2,\n model: RuntimeFormModel\n): ConditionWrapper {\n let coordinator\n\n if (conditionWrapper.conditions.length > 1 && !conditionWrapper.coordinator) {\n throw new Error('Coordinator is required for multiple conditions')\n } else {\n coordinator = conditionWrapper.coordinator\n }\n\n const newConditionWrapper: ConditionWrapper = {\n name: conditionWrapper.id,\n displayName: conditionWrapper.displayName,\n value: {\n name: conditionWrapper.id,\n conditions: conditionWrapper.conditions.map((condition, index) => {\n let newCondition: ConditionData | ConditionRefData\n\n if (isConditionDataV2(condition)) {\n newCondition = convertConditionDataV2(model, condition, coordinator)\n } else {\n newCondition = convertConditionRefDataFromV2(\n model,\n condition,\n index > 0 ? coordinator : undefined\n )\n }\n\n return newCondition\n })\n }\n }\n\n return newConditionWrapper\n}\n\nexport interface RuntimeFormModel {\n getListById: (listId: string) => List | undefined\n getComponentById: (componentId: string) => ComponentDef | undefined\n getConditionById: (conditionId: string) => ConditionWrapperV2 | undefined\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,13 +1,14 @@
1
1
  import Joi from 'joi';
2
2
  import { v4 as uuidV4 } from 'uuid';
3
3
  import { ComponentType } from "../../components/enums.js";
4
+ import { SchemaVersion } from "./types.js";
4
5
  import { ControllerType } from "../../pages/enums.js";
5
6
  import { hasComponents } from "../../pages/helpers.js";
6
7
  const idSchemaOptional = Joi.string().uuid();
7
8
  const idSchema = idSchemaOptional.default(() => uuidV4());
8
9
  const conditionIdRef = Joi.ref('/conditions', {
9
10
  in: true,
10
- adjust: conditions => conditions.map(condition => condition.name)
11
+ adjust: conditions => conditions.map(condition => condition.id)
11
12
  });
12
13
  const componentIdRefSchema = Joi.ref('/pages', {
13
14
  in: true,
@@ -36,11 +37,11 @@ const conditionValueSchema = Joi.object().description('Value specification for a
36
37
  value: Joi.string().trim().required().description('The actual value to compare against'),
37
38
  display: Joi.string().trim().required().description('Human-readable version of the value for display purposes')
38
39
  });
39
- const condition2StringValueDataSchema = Joi.object().description('String value specification for a condition').keys({
40
+ const conditionStringValueDataSchemaV2 = Joi.object().description('String value specification for a condition').keys({
40
41
  type: Joi.string().trim().valid('StringValue').required().description('Type of the condition value, should be "StringValue"'),
41
42
  value: Joi.string().trim().required().description('The actual value to compare against')
42
43
  });
43
- const condition2ListItemRefDataSchema = Joi.object().description('List item ref specification for a condition').keys({
44
+ const conditionListItemRefDataSchemaV2 = Joi.object().description('List item ref specification for a condition').keys({
44
45
  type: Joi.string().trim().valid('ListItemRef').required().description('Type of the condition value, should be "ListItemRef"'),
45
46
  listId: Joi.string().valid(listIdRef).trim().required().description('The id of the list'),
46
47
  itemId: Joi.string().trim().valid(listItemIdRef).required().description('The id of the list item')
@@ -56,7 +57,7 @@ const conditionRefSchema = Joi.object().description('Reference to a named condit
56
57
  conditionDisplayName: Joi.string().trim().required().description('Human-readable name of the condition for display purposes'),
57
58
  coordinator: Joi.string().trim().optional().description('Logical operator connecting this condition with others (AND, OR)')
58
59
  });
59
- const condition2RefDataSchema = Joi.object().description('Reference to a named condition defined elsewhere').keys({
60
+ const conditionRefDataSchemaV2 = Joi.object().description('Reference to a named condition defined elsewhere').keys({
60
61
  id: idSchema.description('Unique identifier for the referenced condition'),
61
62
  conditionId: Joi.string().trim().required().valid(conditionIdRef).description('Name of the referenced condition')
62
63
  });
@@ -66,11 +67,11 @@ const conditionSchema = Joi.object().description('Condition definition specifyin
66
67
  value: Joi.alternatives().try(conditionValueSchema, relativeDateValueDataSchema).description('Value to compare the field against, either fixed or relative date'),
67
68
  coordinator: Joi.string().trim().optional().description('Logical operator connecting this condition with others (AND, OR)')
68
69
  });
69
- const condition2DataSchema = Joi.object().description('Condition definition').keys({
70
+ const conditionDataSchemaV2 = Joi.object().description('Condition definition').keys({
70
71
  id: idSchema.description('Unique identifier used to reference this condition'),
71
72
  componentId: Joi.string().trim().valid(componentIdRefSchema).required().description('Reference to the component id being evaluated in this condition'),
72
73
  operator: Joi.string().trim().required().description('Comparison operator (equals, greaterThan, contains, etc.)'),
73
- value: Joi.alternatives().try(condition2StringValueDataSchema, condition2ListItemRefDataSchema, relativeDateValueDataSchema).description('Value to compare the field against, either fixed or relative date')
74
+ value: Joi.alternatives().try(conditionStringValueDataSchemaV2, conditionListItemRefDataSchemaV2, relativeDateValueDataSchema).description('Value to compare the field against, either fixed or relative date')
74
75
  });
75
76
  const conditionGroupSchema = Joi.object().description('Group of conditions combined with logical operators').keys({
76
77
  conditions: Joi.array().items(Joi.alternatives().try(conditionSchema, conditionRefSchema, Joi.link('#conditionGroupSchema'))).description('Array of conditions or condition references in this group')
@@ -85,10 +86,10 @@ const conditionWrapperSchema = Joi.object().description('Container for a named c
85
86
  value: conditionsModelSchema.required().description('The complete condition definition')
86
87
  });
87
88
  export const conditionWrapperSchemaV2 = Joi.object().description('Container for a named condition with its definition').keys({
88
- name: Joi.string().trim().description('Unique identifier for the condition'),
89
+ id: idSchema.description('Unique identifier for the condition'),
89
90
  displayName: Joi.string().trim().description('Human-readable name for display in the UI'),
90
91
  coordinator: Joi.string().optional().description('Logical operator connecting this condition with others (AND, OR)'),
91
- conditions: Joi.array().items(Joi.alternatives().try(condition2DataSchema, condition2RefDataSchema)).description('Array of conditions or condition references')
92
+ conditions: Joi.array().items(Joi.alternatives().try(conditionDataSchemaV2, conditionRefDataSchemaV2)).description('Array of conditions or condition references')
92
93
  }).description('Condition schema for V2 forms');
93
94
  export const componentSchema = Joi.object().description('Form component definition specifying UI element behavior').keys({
94
95
  id: idSchemaOptional.description('Unique identifier for the component'),
@@ -264,6 +265,7 @@ const outputSchema = Joi.object().description('Configuration for form submission
264
265
  */
265
266
  export const formDefinitionSchema = Joi.object().description('Complete form definition describing all aspects of a form').required().keys({
266
267
  engine: Joi.string().trim().allow('V1', 'V2').default('V1').description('Form engine version to use (V1 or V2)'),
268
+ schema: Joi.number().integer().valid(SchemaVersion.V1).default(SchemaVersion.V1).description('Form schema version to use (1 or 2)'),
267
269
  name: Joi.string().trim().allow('').optional().description('Unique name identifying the form'),
268
270
  feedback: feedbackSchema.optional().description('Feedback mechanism configuration'),
269
271
  startPage: Joi.string().trim().optional().description('Path of the first page to show when starting the form'),
@@ -285,9 +287,10 @@ export const formDefinitionSchema = Joi.object().description('Complete form defi
285
287
  output: outputSchema.optional().description('Configuration for submission output format')
286
288
  });
287
289
  export const formDefinitionV2Schema = formDefinitionSchema.keys({
290
+ schema: Joi.number().integer().valid(SchemaVersion.V2).description('Form schema version to use (2)'),
288
291
  pages: Joi.array().items(pageSchemaV2).required().unique('path').unique('id').description('Pages schema for V2 forms'),
289
292
  lists: Joi.array().items(listSchemaV2).unique('name').unique('title').unique('id').description('Lists schema for V2 forms'),
290
- conditions: Joi.array().items(conditionWrapperSchemaV2).unique('name').unique('displayName').description('Named conditions used for form logic')
293
+ conditions: Joi.array().items(conditionWrapperSchemaV2).unique('id').unique('displayName').description('Named conditions used for form logic')
291
294
  }).description('Form definition schema for V2');
292
295
 
293
296
  // Maintain compatibility with legacy named export
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Joi","v4","uuidV4","ComponentType","ControllerType","hasComponents","idSchemaOptional","string","uuid","idSchema","default","conditionIdRef","ref","in","adjust","conditions","map","condition","name","componentIdRefSchema","pages","flatMap","page","components","filter","component","id","listIdRef","lists","list","listItemIdRef","items","item","sectionsSchema","object","description","keys","trim","required","title","hideTitle","boolean","optional","conditionFieldSchema","type","display","conditionValueSchema","value","condition2StringValueDataSchema","valid","condition2ListItemRefDataSchema","listId","itemId","relativeDateValueDataSchema","period","unit","direction","conditionRefSchema","conditionName","conditionDisplayName","coordinator","condition2RefDataSchema","conditionId","conditionSchema","field","operator","alternatives","try","condition2DataSchema","componentId","conditionGroupSchema","array","link","conditionsModelSchema","conditionWrapperSchema","displayName","conditionWrapperSchemaV2","componentSchema","shortDescription","when","is","Details","Html","InsetText","Markdown","then","pattern","otherwise","allow","hint","options","rows","number","empty","maxWords","maxDaysInPast","maxDaysInFuture","customValidationMessage","customValidationMessages","unknown","schema","min","max","length","componentSchemaV2","fileUploadComponentSchema","FileUploadField","contentComponentSchema","List","nextSchema","path","redirect","repeatOptions","repeatSchema","pageRepeatSchema","eventSchema","method","url","uri","scheme","eventsSchema","onLoad","onSave","pageUploadComponentsSchema","unique","pageSchema","disallow","section","controller","repeat","any","strip","next","events","view","pageSchemaV2","append","switch","FileUpload","baseListItemSchema","text","conditional","stringListItemSchema","numberListItemSchema","listSchema","messages","listSchemaV2","feedbackSchema","feedbackForm","emailAddress","email","tlds","phaseBannerSchema","phase","outputSchema","audience","version","formDefinitionSchema","engine","feedback","startPage","sections","metadata","a","declaration","skipSummary","phaseBanner","outputEmail","output","formDefinitionV2Schema","Schema"],"sources":["../../../../src/form/form-definition/index.ts"],"sourcesContent":["import Joi, { type LanguageMessages } from 'joi'\nimport { v4 as uuidV4 } from 'uuid'\n\nimport { ComponentType } from '~/src/components/enums.js'\nimport {\n type ComponentDef,\n type ContentComponentsDef,\n type FileUploadFieldComponent\n} from '~/src/components/types.js'\nimport {\n type ConditionData,\n type ConditionDataV2,\n type ConditionFieldData,\n type ConditionGroupData,\n type ConditionGroupDataV2,\n type ConditionListItemRefValueDataV2,\n type ConditionRefData,\n type ConditionRefDataV2,\n type ConditionStringValueDataV2,\n type ConditionValueData,\n type ConditionsModelData,\n type RelativeDateValueData\n} from '~/src/conditions/types.js'\nimport {\n type ConditionWrapper,\n type ConditionWrapperV2,\n type Event,\n type EventOptions,\n type Events,\n type FormDefinition,\n type Item,\n type Link,\n type List,\n type Page,\n type PhaseBanner,\n type Repeat,\n type RepeatOptions,\n type RepeatSchema,\n type Section\n} from '~/src/form/form-definition/types.js'\nimport { ControllerType } from '~/src/pages/enums.js'\nimport { hasComponents } from '~/src/pages/helpers.js'\n\nconst idSchemaOptional = Joi.string().uuid()\n\nconst idSchema = idSchemaOptional.default(() => uuidV4())\n\nconst conditionIdRef = Joi.ref('/conditions', {\n in: true,\n adjust: (conditions: ConditionWrapperV2[]) =>\n conditions.map((condition) => condition.name)\n})\n\nconst componentIdRefSchema = Joi.ref('/pages', {\n in: true,\n adjust: (pages: Page[]) =>\n pages.flatMap((page) =>\n hasComponents(page)\n ? page.components\n .filter((component) => component.id)\n .map((component) => component.id)\n : []\n )\n})\n\nconst listIdRef = Joi.ref('/lists', {\n in: true,\n adjust: (lists: List[]) =>\n lists.filter((list) => list.id).map((list) => list.id)\n})\n\nconst listItemIdRef = Joi.ref('/lists', {\n in: true,\n adjust: (lists: List[]) =>\n lists.flatMap((list) =>\n list.items.filter((item) => item.id).map((item) => item.id)\n )\n})\n\nconst sectionsSchema = Joi.object<Section>()\n .description('A form section grouping related pages together')\n .keys({\n name: Joi.string()\n .trim()\n .required()\n .description(\n 'Unique identifier for the section, used in code and page references'\n ),\n title: Joi.string()\n .trim()\n .required()\n .description('Human-readable section title displayed to users'),\n hideTitle: Joi.boolean()\n .optional()\n .default(false)\n .description(\n 'When true, the section title will not be displayed in the UI'\n )\n })\n\nconst conditionFieldSchema = Joi.object<ConditionFieldData>()\n .description('Field reference used in a condition')\n .keys({\n name: Joi.string()\n .trim()\n .required()\n .description('Component name referenced by this condition'),\n type: Joi.string()\n .trim()\n .required()\n .description('Data type of the field (e.g., string, number, date)'),\n display: Joi.string()\n .trim()\n .required()\n .description('Human-readable name of the field for display purposes')\n })\n\nconst conditionValueSchema = Joi.object<ConditionValueData>()\n .description('Value specification for a condition')\n .keys({\n type: Joi.string()\n .trim()\n .required()\n .description('Data type of the value (e.g., string, number, date)'),\n value: Joi.string()\n .trim()\n .required()\n .description('The actual value to compare against'),\n display: Joi.string()\n .trim()\n .required()\n .description('Human-readable version of the value for display purposes')\n })\n\nconst condition2StringValueDataSchema = Joi.object<ConditionStringValueDataV2>()\n .description('String value specification for a condition')\n .keys({\n type: Joi.string()\n .trim()\n .valid('StringValue')\n .required()\n .description('Type of the condition value, should be \"StringValue\"'),\n value: Joi.string()\n .trim()\n .required()\n .description('The actual value to compare against')\n })\n\nconst condition2ListItemRefDataSchema =\n Joi.object<ConditionListItemRefValueDataV2>()\n .description('List item ref specification for a condition')\n .keys({\n type: Joi.string()\n .trim()\n .valid('ListItemRef')\n .required()\n .description('Type of the condition value, should be \"ListItemRef\"'),\n listId: Joi.string()\n .valid(listIdRef)\n .trim()\n .required()\n .description('The id of the list'),\n itemId: Joi.string()\n .trim()\n .valid(listItemIdRef)\n .required()\n .description('The id of the list item')\n })\n\nconst relativeDateValueDataSchema = Joi.object<RelativeDateValueData>()\n .description('Relative date specification for date-based conditions')\n .keys({\n type: Joi.string()\n .trim()\n .valid('RelativeDate')\n .required()\n .description('Type of the condition value, should be \"RelativeDate\"'),\n period: Joi.string()\n .trim()\n .required()\n .description('Numeric amount of the time period, as a string'),\n unit: Joi.string()\n .trim()\n .required()\n .description('Time unit (e.g. days, weeks, months, years)'),\n direction: Joi.string()\n .trim()\n .required()\n .description('Temporal direction, either \"past\" or \"future\"')\n })\n\nconst conditionRefSchema = Joi.object<ConditionRefData>()\n .description('Reference to a named condition defined elsewhere')\n .keys({\n conditionName: Joi.string()\n .trim()\n .required()\n .description('Name of the referenced condition'),\n conditionDisplayName: Joi.string()\n .trim()\n .required()\n .description('Human-readable name of the condition for display purposes'),\n coordinator: Joi.string()\n .trim()\n .optional()\n .description(\n 'Logical operator connecting this condition with others (AND, OR)'\n )\n })\n\nconst condition2RefDataSchema = Joi.object<ConditionRefDataV2>()\n .description('Reference to a named condition defined elsewhere')\n .keys({\n id: idSchema.description('Unique identifier for the referenced condition'),\n conditionId: Joi.string()\n .trim()\n .required()\n .valid(conditionIdRef)\n .description('Name of the referenced condition')\n })\n\nconst conditionSchema = Joi.object<ConditionData>()\n .description('Condition definition specifying a logical comparison')\n .keys({\n field: conditionFieldSchema.description(\n 'The form field being evaluated in this condition'\n ),\n operator: Joi.string()\n .trim()\n .required()\n .description('Comparison operator (equals, greaterThan, contains, etc.)'),\n value: Joi.alternatives()\n .try(conditionValueSchema, relativeDateValueDataSchema)\n .description(\n 'Value to compare the field against, either fixed or relative date'\n ),\n coordinator: Joi.string()\n .trim()\n .optional()\n .description(\n 'Logical operator connecting this condition with others (AND, OR)'\n )\n })\n\nconst condition2DataSchema = Joi.object<ConditionDataV2>()\n .description('Condition definition')\n .keys({\n id: idSchema.description(\n 'Unique identifier used to reference this condition'\n ),\n componentId: Joi.string()\n .trim()\n .valid(componentIdRefSchema)\n .required()\n .description(\n 'Reference to the component id being evaluated in this condition'\n ),\n operator: Joi.string()\n .trim()\n .required()\n .description('Comparison operator (equals, greaterThan, contains, etc.)'),\n value: Joi.alternatives()\n .try(\n condition2StringValueDataSchema,\n condition2ListItemRefDataSchema,\n relativeDateValueDataSchema\n )\n .description(\n 'Value to compare the field against, either fixed or relative date'\n )\n })\n\nconst conditionGroupSchema = Joi.object<ConditionGroupData>()\n .description('Group of conditions combined with logical operators')\n .keys({\n conditions: Joi.array()\n .items(\n Joi.alternatives().try(\n conditionSchema,\n conditionRefSchema,\n Joi.link('#conditionGroupSchema')\n )\n )\n .description('Array of conditions or condition references in this group')\n })\n .id('conditionGroupSchema')\n\nconst conditionsModelSchema = Joi.object<ConditionsModelData>()\n .description('Complete condition model with name and condition set')\n .keys({\n name: Joi.string()\n .trim()\n .required()\n .description('Unique identifier for the condition set'),\n conditions: Joi.array()\n .items(\n Joi.alternatives().try(\n conditionSchema,\n conditionRefSchema,\n conditionGroupSchema\n )\n )\n .description(\n 'Array of conditions, condition references, or condition groups'\n )\n })\n\nconst conditionWrapperSchema = Joi.object<ConditionWrapper>()\n .description('Container for a named condition with its definition')\n .keys({\n name: Joi.string()\n .trim()\n .required()\n .description('Unique identifier used to reference this condition'),\n displayName: Joi.string()\n .trim()\n .description('Human-readable name for display in the UI'),\n value: conditionsModelSchema\n .required()\n .description('The complete condition definition')\n })\n\nexport const conditionWrapperSchemaV2 = Joi.object<ConditionWrapperV2>()\n .description('Container for a named condition with its definition')\n .keys({\n name: Joi.string()\n .trim()\n .description('Unique identifier for the condition'),\n displayName: Joi.string()\n .trim()\n .description('Human-readable name for display in the UI'),\n coordinator: Joi.string()\n .optional()\n .description(\n 'Logical operator connecting this condition with others (AND, OR)'\n ),\n conditions: Joi.array<ConditionGroupDataV2>()\n .items(\n Joi.alternatives().try(condition2DataSchema, condition2RefDataSchema)\n )\n .description('Array of conditions or condition references')\n })\n .description('Condition schema for V2 forms')\n\nexport const componentSchema = Joi.object<ComponentDef>()\n .description('Form component definition specifying UI element behavior')\n .keys({\n id: idSchemaOptional.description('Unique identifier for the component'),\n type: Joi.string<ComponentType>()\n .trim()\n .required()\n .description('Component type (TextField, RadioButtons, DateField, etc.)'),\n shortDescription: Joi.string()\n .trim()\n .optional()\n .description('Brief description of the component purpose'),\n name: Joi.when('type', {\n is: Joi.string().valid(\n ComponentType.Details,\n ComponentType.Html,\n ComponentType.InsetText,\n ComponentType.Markdown\n ),\n then: Joi.string()\n .trim()\n .pattern(/^[a-zA-Z]+$/)\n .optional()\n .description('Optional identifier for display-only components'),\n otherwise: Joi.string()\n .trim()\n .pattern(/^[a-zA-Z]+$/)\n .description('Unique identifier for the component, used in form data')\n }),\n title: Joi.when('type', {\n is: Joi.string().valid(\n ComponentType.Details,\n ComponentType.Html,\n ComponentType.InsetText,\n ComponentType.Markdown\n ),\n then: Joi.string()\n .trim()\n .optional()\n .description('Optional title for display-only components'),\n otherwise: Joi.string()\n .trim()\n .allow('')\n .description('Label displayed above the component')\n }),\n hint: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description(\n 'Additional guidance text displayed below the component title'\n ),\n options: Joi.object({\n rows: Joi.number()\n .empty('')\n .description('Number of rows for textarea components'),\n maxWords: Joi.number()\n .empty('')\n .description('Maximum number of words allowed in text inputs'),\n maxDaysInPast: Joi.number()\n .empty('')\n .description('Maximum days in the past allowed for date inputs'),\n maxDaysInFuture: Joi.number()\n .empty('')\n .description('Maximum days in the future allowed for date inputs'),\n customValidationMessage: Joi.string()\n .trim()\n .allow('')\n .description('Custom error message for validation failures'),\n customValidationMessages: Joi.object<LanguageMessages>()\n .unknown(true)\n .optional()\n .description('Custom error messages keyed by validation rule name')\n })\n .default({})\n .unknown(true)\n .description('Component-specific configuration options'),\n schema: Joi.object({\n min: Joi.number()\n .empty('')\n .description('Minimum value or length for validation'),\n max: Joi.number()\n .empty('')\n .description('Maximum value or length for validation'),\n length: Joi.number()\n .empty('')\n .description('Exact length required for validation')\n })\n .unknown(true)\n .default({})\n .description('Validation rules for the component'),\n list: Joi.string()\n .trim()\n .optional()\n .description(\n 'Reference to a predefined list of options for select components'\n )\n })\n .unknown(true)\n\nexport const componentSchemaV2 = componentSchema\n .keys({\n id: idSchema.description('Unique identifier for the component'),\n list: Joi.string()\n .valid(listIdRef)\n .optional()\n .description(\n 'List id reference to a predefined list of options for select components'\n )\n })\n .description('Component schema for V2 forms')\n\nexport const fileUploadComponentSchema = componentSchemaV2.keys({\n type: Joi.string<ComponentType.FileUploadField>()\n .trim()\n .valid(ComponentType.FileUploadField)\n .required()\n .description('Component that can only be a FileUploadField')\n})\n\nexport const contentComponentSchema = componentSchemaV2.keys({\n type: Joi.string<ComponentType>()\n .trim()\n .valid(ComponentType.Details)\n .valid(ComponentType.Html)\n .valid(ComponentType.Markdown)\n .valid(ComponentType.InsetText)\n .valid(ComponentType.List)\n .required()\n .description('Content only component type (Details, Html, Markdown, etc.)')\n})\n\nconst nextSchema = Joi.object<Link>()\n .description('Navigation link defining where to go after completing a page')\n .keys({\n path: Joi.string()\n .trim()\n .required()\n .description('The target page path to navigate to'),\n condition: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description(\n 'Optional condition that determines if this path should be taken'\n ),\n redirect: Joi.string()\n .trim()\n .optional()\n .description(\n 'Optional external URL to redirect to instead of an internal page'\n )\n })\n\nconst repeatOptions = Joi.object<RepeatOptions>()\n .description('Configuration options for a repeatable page section')\n .keys({\n name: Joi.string()\n .trim()\n .required()\n .description(\n 'Identifier for the repeatable section, used in data structure'\n ),\n title: Joi.string()\n .trim()\n .required()\n .description('Title displayed for each repeatable item')\n })\n\nconst repeatSchema = Joi.object<RepeatSchema>()\n .description('Validation rules for a repeatable section')\n .keys({\n min: Joi.number()\n .empty('')\n .required()\n .description('Minimum number of repetitions required'),\n max: Joi.number()\n .empty('')\n .required()\n .description('Maximum number of repetitions allowed')\n })\n\nexport const pageRepeatSchema = Joi.object<Repeat>()\n .description('Complete configuration for a repeatable page')\n .keys({\n options: repeatOptions\n .required()\n .description('Display and identification options for the repetition'),\n schema: repeatSchema\n .required()\n .description('Validation constraints for the number of repetitions')\n })\n\nconst eventSchema = Joi.object<Event>()\n .description('Event handler configuration for page lifecycle events')\n .keys({\n type: Joi.string()\n .trim()\n .allow('http')\n .required()\n .description(\n 'Type of the event handler (currently only \"http\" supported)'\n ),\n options: Joi.object<EventOptions>()\n .description('Options specific to the event handler type')\n .keys({\n method: Joi.string()\n .trim()\n .allow('POST')\n .required()\n .description('HTTP method to use for the request'),\n url: Joi.string()\n .trim()\n .uri({ scheme: ['http', 'https'] })\n .required()\n .description('URL endpoint to call when the event fires')\n })\n })\n\nconst eventsSchema = Joi.object<Events>()\n .description(\n 'Collection of event handlers for different page lifecycle events'\n )\n .keys({\n onLoad: eventSchema\n .optional()\n .description('Event handler triggered when the page is loaded'),\n onSave: eventSchema\n .optional()\n .description('Event handler triggered when the page data is saved')\n })\n\nexport const pageUploadComponentsSchema = Joi.array<\n FileUploadFieldComponent | ContentComponentsDef\n>()\n .items(\n fileUploadComponentSchema.required(),\n contentComponentSchema.optional()\n )\n .unique('name')\n .unique('id')\n .min(1)\n .max(2)\n .description('Components allowed on Page Upload schema')\n\n/**\n * `/status` is a special route for providing a user's application status.\n * It should not be configured via the designer.\n */\nexport const pageSchema = Joi.object<Page>()\n .description('Form page definition specifying content and behavior')\n .keys({\n id: idSchemaOptional.description('Unique identifier for the page'),\n path: Joi.string()\n .trim()\n .required()\n .disallow('/status')\n .description(\n 'URL path for this page, must not be the reserved \"/status\" path'\n ),\n title: Joi.string()\n .trim()\n .required()\n .description('Page title displayed at the top of the page'),\n section: Joi.string().trim().description('Section this page belongs to'),\n controller: Joi.string()\n .trim()\n .optional()\n .description('Custom controller class name for special page behavior'),\n components: Joi.array<ComponentDef>()\n .items(componentSchema)\n .unique('name')\n .description('UI components displayed on this page'),\n repeat: Joi.when('controller', {\n is: Joi.string().trim().valid('RepeatPageController').required(),\n then: pageRepeatSchema\n .required()\n .description(\n 'Configuration for repeatable pages, required when using RepeatPageController'\n ),\n otherwise: Joi.any().strip()\n }),\n condition: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description('Optional condition that determines if this page is shown'),\n next: Joi.array<Link>()\n .items(nextSchema)\n .default([])\n .description('Possible navigation paths after this page'),\n events: eventsSchema\n .optional()\n .description('Event handlers for page lifecycle events'),\n view: Joi.string()\n .trim()\n .optional()\n .description(\n 'Optional custom view template to use for rendering this page'\n )\n })\n\n/**\n * V2 engine schema - used with new editor\n */\nexport const pageSchemaV2 = pageSchema\n .append({\n id: idSchema.description('Unique identifier for the page'),\n title: Joi.string()\n .trim()\n .allow('')\n .required()\n .description(\n 'Page title displayed at the top of the page (with support for empty titles in V2)'\n ),\n components: Joi.when('controller', {\n switch: [\n {\n is: Joi.string().trim().valid(ControllerType.FileUpload).required(),\n then: pageUploadComponentsSchema\n }\n ],\n otherwise: Joi.array<ComponentDef>()\n .items(componentSchemaV2)\n .unique('name')\n .unique('id')\n .description('Components schema for V2 forms')\n }),\n condition: Joi.string()\n .trim()\n .valid(conditionIdRef)\n .optional()\n .description('Optional condition that determines if this page is shown')\n })\n .description('Page schema for V2 forms')\n\nconst baseListItemSchema = Joi.object<Item>()\n .description('Base schema for list items with common properties')\n .keys({\n id: idSchema.description('Unique identifier for the list item'),\n text: Joi.string()\n .trim()\n .allow('')\n .description('Display text shown to the user'),\n description: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description('Optional additional descriptive text for the item'),\n conditional: Joi.object<Item['conditional']>()\n .description('Optional components to show when this item is selected')\n .keys({\n components: Joi.array<ComponentDef>()\n .required()\n .items(componentSchema.unknown(true))\n .unique('name')\n .description('Components to display conditionally')\n })\n .optional(),\n condition: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description('Condition that determines if this item is shown'),\n hint: Joi.object<Item['hint']>()\n .optional()\n .keys({\n id: idSchema,\n text: Joi.string().trim()\n })\n .description('Optional hint text to be shown on list item')\n })\n\nconst stringListItemSchema = baseListItemSchema\n .append({\n value: Joi.string()\n .trim()\n .required()\n .description('String value stored when this item is selected')\n })\n .description('List item with string value')\n\nconst numberListItemSchema = baseListItemSchema\n .append({\n value: Joi.number()\n .required()\n .description('Numeric value stored when this item is selected')\n })\n .description('List item with numeric value')\n\nexport const listSchema = Joi.object<List>()\n .description('Reusable list of options for select components')\n .keys({\n id: idSchemaOptional.description('Unique identifier for the list'),\n name: Joi.string()\n .trim()\n .required()\n .description('Name used to reference this list from components'),\n title: Joi.string()\n .trim()\n .required()\n .description('Human-readable title for the list'),\n type: Joi.string()\n .trim()\n .required()\n .valid('string', 'number')\n .description('Data type for list values (string or number)'),\n items: Joi.when('type', {\n is: 'string',\n then: Joi.array()\n .items(stringListItemSchema)\n .unique('text')\n .unique('value')\n .messages({\n 'array.unique':\n 'Each item must have a unique identifier - enter a different identifier for this item.'\n })\n .description('Array of items with string values'),\n otherwise: Joi.array()\n .items(numberListItemSchema)\n .unique('text')\n .unique('value')\n .description('Array of items with numeric values')\n })\n })\n\n/**\n * V2 Joi schema for Lists\n */\nexport const listSchemaV2 = listSchema\n .keys({\n id: idSchema.description('Unique identifier for the list')\n })\n .description('List schema for V2 forms')\n\nconst feedbackSchema = Joi.object<FormDefinition['feedback']>()\n .description('Feedback configuration for the form')\n .keys({\n feedbackForm: Joi.boolean()\n .default(false)\n .description('Whether to show the built-in feedback form'),\n url: Joi.when('feedbackForm', {\n is: Joi.boolean().valid(false),\n then: Joi.string()\n .trim()\n .optional()\n .allow('')\n .description(\n 'URL to an external feedback form when not using built-in feedback'\n )\n }),\n emailAddress: Joi.string()\n .trim()\n .email({\n tlds: {\n allow: false\n }\n })\n .optional()\n .description('Email address where feedback is sent')\n })\n\nconst phaseBannerSchema = Joi.object<PhaseBanner>()\n .description('Phase banner configuration showing development status')\n .keys({\n phase: Joi.string()\n .trim()\n .valid('alpha', 'beta')\n .description('Development phase of the service (alpha or beta)')\n })\n\nconst outputSchema = Joi.object<FormDefinition['output']>()\n .description('Configuration for form submission output')\n .keys({\n audience: Joi.string()\n .trim()\n .valid('human', 'machine')\n .required()\n .description(\n 'Target audience for the output (human readable or machine processable)'\n ),\n version: Joi.string()\n .trim()\n .required()\n .description('Version identifier for the output format')\n })\n\n/**\n * Joi schema for `FormDefinition` interface\n * @see {@link FormDefinition}\n */\nexport const formDefinitionSchema = Joi.object<FormDefinition>()\n .description('Complete form definition describing all aspects of a form')\n .required()\n .keys({\n engine: Joi.string()\n .trim()\n .allow('V1', 'V2')\n .default('V1')\n .description('Form engine version to use (V1 or V2)'),\n name: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description('Unique name identifying the form'),\n feedback: feedbackSchema\n .optional()\n .description('Feedback mechanism configuration'),\n startPage: Joi.string()\n .trim()\n .optional()\n .description('Path of the first page to show when starting the form'),\n pages: Joi.array<Page>()\n .required()\n .items(pageSchema)\n .description('Pages schema for V1 forms')\n .unique('path'),\n sections: Joi.array<Section>()\n .items(sectionsSchema)\n .unique('name')\n .unique('title')\n .required()\n .description('Sections grouping related pages together'),\n conditions: Joi.array<ConditionWrapper>()\n .items(conditionWrapperSchema)\n .unique('name')\n .unique('displayName')\n .description('Named conditions used for form logic'),\n lists: Joi.array<List>()\n .items(listSchema)\n .unique('name')\n .unique('title')\n .description('Reusable lists of options for select components'),\n metadata: Joi.object({ a: Joi.any() })\n .unknown()\n .optional()\n .description('Custom metadata for the form'),\n declaration: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description('Declaration text shown on the summary page'),\n skipSummary: Joi.any()\n .strip()\n .description('option to skip the summary page'),\n phaseBanner: phaseBannerSchema\n .optional()\n .description('Phase banner configuration'),\n outputEmail: Joi.string()\n .trim()\n .email({ tlds: { allow: ['uk'] } })\n .optional()\n .description('Email address where form submissions are sent'),\n output: outputSchema\n .optional()\n .description('Configuration for submission output format')\n })\n\nexport const formDefinitionV2Schema = formDefinitionSchema\n .keys({\n pages: Joi.array<Page>()\n .items(pageSchemaV2)\n .required()\n .unique('path')\n .unique('id')\n .description('Pages schema for V2 forms'),\n lists: Joi.array<List>()\n .items(listSchemaV2)\n .unique('name')\n .unique('title')\n .unique('id')\n .description('Lists schema for V2 forms'),\n conditions: Joi.array<ConditionWrapperV2>()\n .items(conditionWrapperSchemaV2)\n .unique('name')\n .unique('displayName')\n .description('Named conditions used for form logic')\n })\n .description('Form definition schema for V2')\n\n// Maintain compatibility with legacy named export\n// E.g. `import { Schema } from '@defra/forms-model'`\nexport const Schema = formDefinitionSchema\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["Joi","v4","uuidV4","ComponentType","SchemaVersion","ControllerType","hasComponents","idSchemaOptional","string","uuid","idSchema","default","conditionIdRef","ref","in","adjust","conditions","map","condition","id","componentIdRefSchema","pages","flatMap","page","components","filter","component","listIdRef","lists","list","listItemIdRef","items","item","sectionsSchema","object","description","keys","name","trim","required","title","hideTitle","boolean","optional","conditionFieldSchema","type","display","conditionValueSchema","value","conditionStringValueDataSchemaV2","valid","conditionListItemRefDataSchemaV2","listId","itemId","relativeDateValueDataSchema","period","unit","direction","conditionRefSchema","conditionName","conditionDisplayName","coordinator","conditionRefDataSchemaV2","conditionId","conditionSchema","field","operator","alternatives","try","conditionDataSchemaV2","componentId","conditionGroupSchema","array","link","conditionsModelSchema","conditionWrapperSchema","displayName","conditionWrapperSchemaV2","componentSchema","shortDescription","when","is","Details","Html","InsetText","Markdown","then","pattern","otherwise","allow","hint","options","rows","number","empty","maxWords","maxDaysInPast","maxDaysInFuture","customValidationMessage","customValidationMessages","unknown","schema","min","max","length","componentSchemaV2","fileUploadComponentSchema","FileUploadField","contentComponentSchema","List","nextSchema","path","redirect","repeatOptions","repeatSchema","pageRepeatSchema","eventSchema","method","url","uri","scheme","eventsSchema","onLoad","onSave","pageUploadComponentsSchema","unique","pageSchema","disallow","section","controller","repeat","any","strip","next","events","view","pageSchemaV2","append","switch","FileUpload","baseListItemSchema","text","conditional","stringListItemSchema","numberListItemSchema","listSchema","messages","listSchemaV2","feedbackSchema","feedbackForm","emailAddress","email","tlds","phaseBannerSchema","phase","outputSchema","audience","version","formDefinitionSchema","engine","integer","V1","feedback","startPage","sections","metadata","a","declaration","skipSummary","phaseBanner","outputEmail","output","formDefinitionV2Schema","V2","Schema"],"sources":["../../../../src/form/form-definition/index.ts"],"sourcesContent":["import Joi, { type LanguageMessages } from 'joi'\nimport { v4 as uuidV4 } from 'uuid'\n\nimport { ComponentType } from '~/src/components/enums.js'\nimport {\n type ComponentDef,\n type ContentComponentsDef,\n type FileUploadFieldComponent\n} from '~/src/components/types.js'\nimport {\n type ConditionData,\n type ConditionDataV2,\n type ConditionFieldData,\n type ConditionGroupData,\n type ConditionGroupDataV2,\n type ConditionListItemRefValueDataV2,\n type ConditionRefData,\n type ConditionRefDataV2,\n type ConditionStringValueDataV2,\n type ConditionValueData,\n type ConditionsModelData,\n type RelativeDateValueData\n} from '~/src/conditions/types.js'\nimport {\n SchemaVersion,\n type ConditionWrapper,\n type ConditionWrapperV2,\n type Event,\n type EventOptions,\n type Events,\n type FormDefinition,\n type Item,\n type Link,\n type List,\n type Page,\n type PhaseBanner,\n type Repeat,\n type RepeatOptions,\n type RepeatSchema,\n type Section\n} from '~/src/form/form-definition/types.js'\nimport { ControllerType } from '~/src/pages/enums.js'\nimport { hasComponents } from '~/src/pages/helpers.js'\n\nconst idSchemaOptional = Joi.string().uuid()\n\nconst idSchema = idSchemaOptional.default(() => uuidV4())\n\nconst conditionIdRef = Joi.ref('/conditions', {\n in: true,\n adjust: (conditions: ConditionWrapperV2[]) =>\n conditions.map((condition) => condition.id)\n})\n\nconst componentIdRefSchema = Joi.ref('/pages', {\n in: true,\n adjust: (pages: Page[]) =>\n pages.flatMap((page) =>\n hasComponents(page)\n ? page.components\n .filter((component) => component.id)\n .map((component) => component.id)\n : []\n )\n})\n\nconst listIdRef = Joi.ref('/lists', {\n in: true,\n adjust: (lists: List[]) =>\n lists.filter((list) => list.id).map((list) => list.id)\n})\n\nconst listItemIdRef = Joi.ref('/lists', {\n in: true,\n adjust: (lists: List[]) =>\n lists.flatMap((list) =>\n list.items.filter((item) => item.id).map((item) => item.id)\n )\n})\n\nconst sectionsSchema = Joi.object<Section>()\n .description('A form section grouping related pages together')\n .keys({\n name: Joi.string()\n .trim()\n .required()\n .description(\n 'Unique identifier for the section, used in code and page references'\n ),\n title: Joi.string()\n .trim()\n .required()\n .description('Human-readable section title displayed to users'),\n hideTitle: Joi.boolean()\n .optional()\n .default(false)\n .description(\n 'When true, the section title will not be displayed in the UI'\n )\n })\n\nconst conditionFieldSchema = Joi.object<ConditionFieldData>()\n .description('Field reference used in a condition')\n .keys({\n name: Joi.string()\n .trim()\n .required()\n .description('Component name referenced by this condition'),\n type: Joi.string()\n .trim()\n .required()\n .description('Data type of the field (e.g., string, number, date)'),\n display: Joi.string()\n .trim()\n .required()\n .description('Human-readable name of the field for display purposes')\n })\n\nconst conditionValueSchema = Joi.object<ConditionValueData>()\n .description('Value specification for a condition')\n .keys({\n type: Joi.string()\n .trim()\n .required()\n .description('Data type of the value (e.g., string, number, date)'),\n value: Joi.string()\n .trim()\n .required()\n .description('The actual value to compare against'),\n display: Joi.string()\n .trim()\n .required()\n .description('Human-readable version of the value for display purposes')\n })\n\nconst conditionStringValueDataSchemaV2 =\n Joi.object<ConditionStringValueDataV2>()\n .description('String value specification for a condition')\n .keys({\n type: Joi.string()\n .trim()\n .valid('StringValue')\n .required()\n .description('Type of the condition value, should be \"StringValue\"'),\n value: Joi.string()\n .trim()\n .required()\n .description('The actual value to compare against')\n })\n\nconst conditionListItemRefDataSchemaV2 =\n Joi.object<ConditionListItemRefValueDataV2>()\n .description('List item ref specification for a condition')\n .keys({\n type: Joi.string()\n .trim()\n .valid('ListItemRef')\n .required()\n .description('Type of the condition value, should be \"ListItemRef\"'),\n listId: Joi.string()\n .valid(listIdRef)\n .trim()\n .required()\n .description('The id of the list'),\n itemId: Joi.string()\n .trim()\n .valid(listItemIdRef)\n .required()\n .description('The id of the list item')\n })\n\nconst relativeDateValueDataSchema = Joi.object<RelativeDateValueData>()\n .description('Relative date specification for date-based conditions')\n .keys({\n type: Joi.string()\n .trim()\n .valid('RelativeDate')\n .required()\n .description('Type of the condition value, should be \"RelativeDate\"'),\n period: Joi.string()\n .trim()\n .required()\n .description('Numeric amount of the time period, as a string'),\n unit: Joi.string()\n .trim()\n .required()\n .description('Time unit (e.g. days, weeks, months, years)'),\n direction: Joi.string()\n .trim()\n .required()\n .description('Temporal direction, either \"past\" or \"future\"')\n })\n\nconst conditionRefSchema = Joi.object<ConditionRefData>()\n .description('Reference to a named condition defined elsewhere')\n .keys({\n conditionName: Joi.string()\n .trim()\n .required()\n .description('Name of the referenced condition'),\n conditionDisplayName: Joi.string()\n .trim()\n .required()\n .description('Human-readable name of the condition for display purposes'),\n coordinator: Joi.string()\n .trim()\n .optional()\n .description(\n 'Logical operator connecting this condition with others (AND, OR)'\n )\n })\n\nconst conditionRefDataSchemaV2 = Joi.object<ConditionRefDataV2>()\n .description('Reference to a named condition defined elsewhere')\n .keys({\n id: idSchema.description('Unique identifier for the referenced condition'),\n conditionId: Joi.string()\n .trim()\n .required()\n .valid(conditionIdRef)\n .description('Name of the referenced condition')\n })\n\nconst conditionSchema = Joi.object<ConditionData>()\n .description('Condition definition specifying a logical comparison')\n .keys({\n field: conditionFieldSchema.description(\n 'The form field being evaluated in this condition'\n ),\n operator: Joi.string()\n .trim()\n .required()\n .description('Comparison operator (equals, greaterThan, contains, etc.)'),\n value: Joi.alternatives()\n .try(conditionValueSchema, relativeDateValueDataSchema)\n .description(\n 'Value to compare the field against, either fixed or relative date'\n ),\n coordinator: Joi.string()\n .trim()\n .optional()\n .description(\n 'Logical operator connecting this condition with others (AND, OR)'\n )\n })\n\nconst conditionDataSchemaV2 = Joi.object<ConditionDataV2>()\n .description('Condition definition')\n .keys({\n id: idSchema.description(\n 'Unique identifier used to reference this condition'\n ),\n componentId: Joi.string()\n .trim()\n .valid(componentIdRefSchema)\n .required()\n .description(\n 'Reference to the component id being evaluated in this condition'\n ),\n operator: Joi.string()\n .trim()\n .required()\n .description('Comparison operator (equals, greaterThan, contains, etc.)'),\n value: Joi.alternatives()\n .try(\n conditionStringValueDataSchemaV2,\n conditionListItemRefDataSchemaV2,\n relativeDateValueDataSchema\n )\n .description(\n 'Value to compare the field against, either fixed or relative date'\n )\n })\n\nconst conditionGroupSchema = Joi.object<ConditionGroupData>()\n .description('Group of conditions combined with logical operators')\n .keys({\n conditions: Joi.array()\n .items(\n Joi.alternatives().try(\n conditionSchema,\n conditionRefSchema,\n Joi.link('#conditionGroupSchema')\n )\n )\n .description('Array of conditions or condition references in this group')\n })\n .id('conditionGroupSchema')\n\nconst conditionsModelSchema = Joi.object<ConditionsModelData>()\n .description('Complete condition model with name and condition set')\n .keys({\n name: Joi.string()\n .trim()\n .required()\n .description('Unique identifier for the condition set'),\n conditions: Joi.array()\n .items(\n Joi.alternatives().try(\n conditionSchema,\n conditionRefSchema,\n conditionGroupSchema\n )\n )\n .description(\n 'Array of conditions, condition references, or condition groups'\n )\n })\n\nconst conditionWrapperSchema = Joi.object<ConditionWrapper>()\n .description('Container for a named condition with its definition')\n .keys({\n name: Joi.string()\n .trim()\n .required()\n .description('Unique identifier used to reference this condition'),\n displayName: Joi.string()\n .trim()\n .description('Human-readable name for display in the UI'),\n value: conditionsModelSchema\n .required()\n .description('The complete condition definition')\n })\n\nexport const conditionWrapperSchemaV2 = Joi.object<ConditionWrapperV2>()\n .description('Container for a named condition with its definition')\n .keys({\n id: idSchema.description('Unique identifier for the condition'),\n displayName: Joi.string()\n .trim()\n .description('Human-readable name for display in the UI'),\n coordinator: Joi.string()\n .optional()\n .description(\n 'Logical operator connecting this condition with others (AND, OR)'\n ),\n conditions: Joi.array<ConditionGroupDataV2>()\n .items(\n Joi.alternatives().try(conditionDataSchemaV2, conditionRefDataSchemaV2)\n )\n .description('Array of conditions or condition references')\n })\n .description('Condition schema for V2 forms')\n\nexport const componentSchema = Joi.object<ComponentDef>()\n .description('Form component definition specifying UI element behavior')\n .keys({\n id: idSchemaOptional.description('Unique identifier for the component'),\n type: Joi.string<ComponentType>()\n .trim()\n .required()\n .description('Component type (TextField, RadioButtons, DateField, etc.)'),\n shortDescription: Joi.string()\n .trim()\n .optional()\n .description('Brief description of the component purpose'),\n name: Joi.when('type', {\n is: Joi.string().valid(\n ComponentType.Details,\n ComponentType.Html,\n ComponentType.InsetText,\n ComponentType.Markdown\n ),\n then: Joi.string()\n .trim()\n .pattern(/^[a-zA-Z]+$/)\n .optional()\n .description('Optional identifier for display-only components'),\n otherwise: Joi.string()\n .trim()\n .pattern(/^[a-zA-Z]+$/)\n .description('Unique identifier for the component, used in form data')\n }),\n title: Joi.when('type', {\n is: Joi.string().valid(\n ComponentType.Details,\n ComponentType.Html,\n ComponentType.InsetText,\n ComponentType.Markdown\n ),\n then: Joi.string()\n .trim()\n .optional()\n .description('Optional title for display-only components'),\n otherwise: Joi.string()\n .trim()\n .allow('')\n .description('Label displayed above the component')\n }),\n hint: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description(\n 'Additional guidance text displayed below the component title'\n ),\n options: Joi.object({\n rows: Joi.number()\n .empty('')\n .description('Number of rows for textarea components'),\n maxWords: Joi.number()\n .empty('')\n .description('Maximum number of words allowed in text inputs'),\n maxDaysInPast: Joi.number()\n .empty('')\n .description('Maximum days in the past allowed for date inputs'),\n maxDaysInFuture: Joi.number()\n .empty('')\n .description('Maximum days in the future allowed for date inputs'),\n customValidationMessage: Joi.string()\n .trim()\n .allow('')\n .description('Custom error message for validation failures'),\n customValidationMessages: Joi.object<LanguageMessages>()\n .unknown(true)\n .optional()\n .description('Custom error messages keyed by validation rule name')\n })\n .default({})\n .unknown(true)\n .description('Component-specific configuration options'),\n schema: Joi.object({\n min: Joi.number()\n .empty('')\n .description('Minimum value or length for validation'),\n max: Joi.number()\n .empty('')\n .description('Maximum value or length for validation'),\n length: Joi.number()\n .empty('')\n .description('Exact length required for validation')\n })\n .unknown(true)\n .default({})\n .description('Validation rules for the component'),\n list: Joi.string()\n .trim()\n .optional()\n .description(\n 'Reference to a predefined list of options for select components'\n )\n })\n .unknown(true)\n\nexport const componentSchemaV2 = componentSchema\n .keys({\n id: idSchema.description('Unique identifier for the component'),\n list: Joi.string()\n .valid(listIdRef)\n .optional()\n .description(\n 'List id reference to a predefined list of options for select components'\n )\n })\n .description('Component schema for V2 forms')\n\nexport const fileUploadComponentSchema = componentSchemaV2.keys({\n type: Joi.string<ComponentType.FileUploadField>()\n .trim()\n .valid(ComponentType.FileUploadField)\n .required()\n .description('Component that can only be a FileUploadField')\n})\n\nexport const contentComponentSchema = componentSchemaV2.keys({\n type: Joi.string<ComponentType>()\n .trim()\n .valid(ComponentType.Details)\n .valid(ComponentType.Html)\n .valid(ComponentType.Markdown)\n .valid(ComponentType.InsetText)\n .valid(ComponentType.List)\n .required()\n .description('Content only component type (Details, Html, Markdown, etc.)')\n})\n\nconst nextSchema = Joi.object<Link>()\n .description('Navigation link defining where to go after completing a page')\n .keys({\n path: Joi.string()\n .trim()\n .required()\n .description('The target page path to navigate to'),\n condition: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description(\n 'Optional condition that determines if this path should be taken'\n ),\n redirect: Joi.string()\n .trim()\n .optional()\n .description(\n 'Optional external URL to redirect to instead of an internal page'\n )\n })\n\nconst repeatOptions = Joi.object<RepeatOptions>()\n .description('Configuration options for a repeatable page section')\n .keys({\n name: Joi.string()\n .trim()\n .required()\n .description(\n 'Identifier for the repeatable section, used in data structure'\n ),\n title: Joi.string()\n .trim()\n .required()\n .description('Title displayed for each repeatable item')\n })\n\nconst repeatSchema = Joi.object<RepeatSchema>()\n .description('Validation rules for a repeatable section')\n .keys({\n min: Joi.number()\n .empty('')\n .required()\n .description('Minimum number of repetitions required'),\n max: Joi.number()\n .empty('')\n .required()\n .description('Maximum number of repetitions allowed')\n })\n\nexport const pageRepeatSchema = Joi.object<Repeat>()\n .description('Complete configuration for a repeatable page')\n .keys({\n options: repeatOptions\n .required()\n .description('Display and identification options for the repetition'),\n schema: repeatSchema\n .required()\n .description('Validation constraints for the number of repetitions')\n })\n\nconst eventSchema = Joi.object<Event>()\n .description('Event handler configuration for page lifecycle events')\n .keys({\n type: Joi.string()\n .trim()\n .allow('http')\n .required()\n .description(\n 'Type of the event handler (currently only \"http\" supported)'\n ),\n options: Joi.object<EventOptions>()\n .description('Options specific to the event handler type')\n .keys({\n method: Joi.string()\n .trim()\n .allow('POST')\n .required()\n .description('HTTP method to use for the request'),\n url: Joi.string()\n .trim()\n .uri({ scheme: ['http', 'https'] })\n .required()\n .description('URL endpoint to call when the event fires')\n })\n })\n\nconst eventsSchema = Joi.object<Events>()\n .description(\n 'Collection of event handlers for different page lifecycle events'\n )\n .keys({\n onLoad: eventSchema\n .optional()\n .description('Event handler triggered when the page is loaded'),\n onSave: eventSchema\n .optional()\n .description('Event handler triggered when the page data is saved')\n })\n\nexport const pageUploadComponentsSchema = Joi.array<\n FileUploadFieldComponent | ContentComponentsDef\n>()\n .items(\n fileUploadComponentSchema.required(),\n contentComponentSchema.optional()\n )\n .unique('name')\n .unique('id')\n .min(1)\n .max(2)\n .description('Components allowed on Page Upload schema')\n\n/**\n * `/status` is a special route for providing a user's application status.\n * It should not be configured via the designer.\n */\nexport const pageSchema = Joi.object<Page>()\n .description('Form page definition specifying content and behavior')\n .keys({\n id: idSchemaOptional.description('Unique identifier for the page'),\n path: Joi.string()\n .trim()\n .required()\n .disallow('/status')\n .description(\n 'URL path for this page, must not be the reserved \"/status\" path'\n ),\n title: Joi.string()\n .trim()\n .required()\n .description('Page title displayed at the top of the page'),\n section: Joi.string().trim().description('Section this page belongs to'),\n controller: Joi.string()\n .trim()\n .optional()\n .description('Custom controller class name for special page behavior'),\n components: Joi.array<ComponentDef>()\n .items(componentSchema)\n .unique('name')\n .description('UI components displayed on this page'),\n repeat: Joi.when('controller', {\n is: Joi.string().trim().valid('RepeatPageController').required(),\n then: pageRepeatSchema\n .required()\n .description(\n 'Configuration for repeatable pages, required when using RepeatPageController'\n ),\n otherwise: Joi.any().strip()\n }),\n condition: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description('Optional condition that determines if this page is shown'),\n next: Joi.array<Link>()\n .items(nextSchema)\n .default([])\n .description('Possible navigation paths after this page'),\n events: eventsSchema\n .optional()\n .description('Event handlers for page lifecycle events'),\n view: Joi.string()\n .trim()\n .optional()\n .description(\n 'Optional custom view template to use for rendering this page'\n )\n })\n\n/**\n * V2 engine schema - used with new editor\n */\nexport const pageSchemaV2 = pageSchema\n .append({\n id: idSchema.description('Unique identifier for the page'),\n title: Joi.string()\n .trim()\n .allow('')\n .required()\n .description(\n 'Page title displayed at the top of the page (with support for empty titles in V2)'\n ),\n components: Joi.when('controller', {\n switch: [\n {\n is: Joi.string().trim().valid(ControllerType.FileUpload).required(),\n then: pageUploadComponentsSchema\n }\n ],\n otherwise: Joi.array<ComponentDef>()\n .items(componentSchemaV2)\n .unique('name')\n .unique('id')\n .description('Components schema for V2 forms')\n }),\n condition: Joi.string()\n .trim()\n .valid(conditionIdRef)\n .optional()\n .description('Optional condition that determines if this page is shown')\n })\n .description('Page schema for V2 forms')\n\nconst baseListItemSchema = Joi.object<Item>()\n .description('Base schema for list items with common properties')\n .keys({\n id: idSchema.description('Unique identifier for the list item'),\n text: Joi.string()\n .trim()\n .allow('')\n .description('Display text shown to the user'),\n description: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description('Optional additional descriptive text for the item'),\n conditional: Joi.object<Item['conditional']>()\n .description('Optional components to show when this item is selected')\n .keys({\n components: Joi.array<ComponentDef>()\n .required()\n .items(componentSchema.unknown(true))\n .unique('name')\n .description('Components to display conditionally')\n })\n .optional(),\n condition: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description('Condition that determines if this item is shown'),\n hint: Joi.object<Item['hint']>()\n .optional()\n .keys({\n id: idSchema,\n text: Joi.string().trim()\n })\n .description('Optional hint text to be shown on list item')\n })\n\nconst stringListItemSchema = baseListItemSchema\n .append({\n value: Joi.string()\n .trim()\n .required()\n .description('String value stored when this item is selected')\n })\n .description('List item with string value')\n\nconst numberListItemSchema = baseListItemSchema\n .append({\n value: Joi.number()\n .required()\n .description('Numeric value stored when this item is selected')\n })\n .description('List item with numeric value')\n\nexport const listSchema = Joi.object<List>()\n .description('Reusable list of options for select components')\n .keys({\n id: idSchemaOptional.description('Unique identifier for the list'),\n name: Joi.string()\n .trim()\n .required()\n .description('Name used to reference this list from components'),\n title: Joi.string()\n .trim()\n .required()\n .description('Human-readable title for the list'),\n type: Joi.string()\n .trim()\n .required()\n .valid('string', 'number')\n .description('Data type for list values (string or number)'),\n items: Joi.when('type', {\n is: 'string',\n then: Joi.array()\n .items(stringListItemSchema)\n .unique('text')\n .unique('value')\n .messages({\n 'array.unique':\n 'Each item must have a unique identifier - enter a different identifier for this item.'\n })\n .description('Array of items with string values'),\n otherwise: Joi.array()\n .items(numberListItemSchema)\n .unique('text')\n .unique('value')\n .description('Array of items with numeric values')\n })\n })\n\n/**\n * V2 Joi schema for Lists\n */\nexport const listSchemaV2 = listSchema\n .keys({\n id: idSchema.description('Unique identifier for the list')\n })\n .description('List schema for V2 forms')\n\nconst feedbackSchema = Joi.object<FormDefinition['feedback']>()\n .description('Feedback configuration for the form')\n .keys({\n feedbackForm: Joi.boolean()\n .default(false)\n .description('Whether to show the built-in feedback form'),\n url: Joi.when('feedbackForm', {\n is: Joi.boolean().valid(false),\n then: Joi.string()\n .trim()\n .optional()\n .allow('')\n .description(\n 'URL to an external feedback form when not using built-in feedback'\n )\n }),\n emailAddress: Joi.string()\n .trim()\n .email({\n tlds: {\n allow: false\n }\n })\n .optional()\n .description('Email address where feedback is sent')\n })\n\nconst phaseBannerSchema = Joi.object<PhaseBanner>()\n .description('Phase banner configuration showing development status')\n .keys({\n phase: Joi.string()\n .trim()\n .valid('alpha', 'beta')\n .description('Development phase of the service (alpha or beta)')\n })\n\nconst outputSchema = Joi.object<FormDefinition['output']>()\n .description('Configuration for form submission output')\n .keys({\n audience: Joi.string()\n .trim()\n .valid('human', 'machine')\n .required()\n .description(\n 'Target audience for the output (human readable or machine processable)'\n ),\n version: Joi.string()\n .trim()\n .required()\n .description('Version identifier for the output format')\n })\n\n/**\n * Joi schema for `FormDefinition` interface\n * @see {@link FormDefinition}\n */\nexport const formDefinitionSchema = Joi.object<FormDefinition>()\n .description('Complete form definition describing all aspects of a form')\n .required()\n .keys({\n engine: Joi.string()\n .trim()\n .allow('V1', 'V2')\n .default('V1')\n .description('Form engine version to use (V1 or V2)'),\n schema: Joi.number()\n .integer()\n .valid(SchemaVersion.V1)\n .default(SchemaVersion.V1)\n .description('Form schema version to use (1 or 2)'),\n name: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description('Unique name identifying the form'),\n feedback: feedbackSchema\n .optional()\n .description('Feedback mechanism configuration'),\n startPage: Joi.string()\n .trim()\n .optional()\n .description('Path of the first page to show when starting the form'),\n pages: Joi.array<Page>()\n .required()\n .items(pageSchema)\n .description('Pages schema for V1 forms')\n .unique('path'),\n sections: Joi.array<Section>()\n .items(sectionsSchema)\n .unique('name')\n .unique('title')\n .required()\n .description('Sections grouping related pages together'),\n conditions: Joi.array<ConditionWrapper>()\n .items(conditionWrapperSchema)\n .unique('name')\n .unique('displayName')\n .description('Named conditions used for form logic'),\n lists: Joi.array<List>()\n .items(listSchema)\n .unique('name')\n .unique('title')\n .description('Reusable lists of options for select components'),\n metadata: Joi.object({ a: Joi.any() })\n .unknown()\n .optional()\n .description('Custom metadata for the form'),\n declaration: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description('Declaration text shown on the summary page'),\n skipSummary: Joi.any()\n .strip()\n .description('option to skip the summary page'),\n phaseBanner: phaseBannerSchema\n .optional()\n .description('Phase banner configuration'),\n outputEmail: Joi.string()\n .trim()\n .email({ tlds: { allow: ['uk'] } })\n .optional()\n .description('Email address where form submissions are sent'),\n output: outputSchema\n .optional()\n .description('Configuration for submission output format')\n })\n\nexport const formDefinitionV2Schema = formDefinitionSchema\n .keys({\n schema: Joi.number()\n .integer()\n .valid(SchemaVersion.V2)\n .description('Form schema version to use (2)'),\n pages: Joi.array<Page>()\n .items(pageSchemaV2)\n .required()\n .unique('path')\n .unique('id')\n .description('Pages schema for V2 forms'),\n lists: Joi.array<List>()\n .items(listSchemaV2)\n .unique('name')\n .unique('title')\n .unique('id')\n .description('Lists schema for V2 forms'),\n conditions: Joi.array<ConditionWrapperV2>()\n .items(conditionWrapperSchemaV2)\n .unique('id')\n .unique('displayName')\n .description('Named conditions used for form logic')\n })\n .description('Form definition schema for V2')\n\n// Maintain compatibility with legacy named export\n// E.g. `import { Schema } from '@defra/forms-model'`\nexport const Schema = formDefinitionSchema\n"],"mappings":"AAAA,OAAOA,GAAG,MAAiC,KAAK;AAChD,SAASC,EAAE,IAAIC,MAAM,QAAQ,MAAM;AAEnC,SAASC,aAAa;AAoBtB,SACEC,aAAa;AAiBf,SAASC,cAAc;AACvB,SAASC,aAAa;AAEtB,MAAMC,gBAAgB,GAAGP,GAAG,CAACQ,MAAM,CAAC,CAAC,CAACC,IAAI,CAAC,CAAC;AAE5C,MAAMC,QAAQ,GAAGH,gBAAgB,CAACI,OAAO,CAAC,MAAMT,MAAM,CAAC,CAAC,CAAC;AAEzD,MAAMU,cAAc,GAAGZ,GAAG,CAACa,GAAG,CAAC,aAAa,EAAE;EAC5CC,EAAE,EAAE,IAAI;EACRC,MAAM,EAAGC,UAAgC,IACvCA,UAAU,CAACC,GAAG,CAAEC,SAAS,IAAKA,SAAS,CAACC,EAAE;AAC9C,CAAC,CAAC;AAEF,MAAMC,oBAAoB,GAAGpB,GAAG,CAACa,GAAG,CAAC,QAAQ,EAAE;EAC7CC,EAAE,EAAE,IAAI;EACRC,MAAM,EAAGM,KAAa,IACpBA,KAAK,CAACC,OAAO,CAAEC,IAAI,IACjBjB,aAAa,CAACiB,IAAI,CAAC,GACfA,IAAI,CAACC,UAAU,CACZC,MAAM,CAAEC,SAAS,IAAKA,SAAS,CAACP,EAAE,CAAC,CACnCF,GAAG,CAAES,SAAS,IAAKA,SAAS,CAACP,EAAE,CAAC,GACnC,EACN;AACJ,CAAC,CAAC;AAEF,MAAMQ,SAAS,GAAG3B,GAAG,CAACa,GAAG,CAAC,QAAQ,EAAE;EAClCC,EAAE,EAAE,IAAI;EACRC,MAAM,EAAGa,KAAa,IACpBA,KAAK,CAACH,MAAM,CAAEI,IAAI,IAAKA,IAAI,CAACV,EAAE,CAAC,CAACF,GAAG,CAAEY,IAAI,IAAKA,IAAI,CAACV,EAAE;AACzD,CAAC,CAAC;AAEF,MAAMW,aAAa,GAAG9B,GAAG,CAACa,GAAG,CAAC,QAAQ,EAAE;EACtCC,EAAE,EAAE,IAAI;EACRC,MAAM,EAAGa,KAAa,IACpBA,KAAK,CAACN,OAAO,CAAEO,IAAI,IACjBA,IAAI,CAACE,KAAK,CAACN,MAAM,CAAEO,IAAI,IAAKA,IAAI,CAACb,EAAE,CAAC,CAACF,GAAG,CAAEe,IAAI,IAAKA,IAAI,CAACb,EAAE,CAC5D;AACJ,CAAC,CAAC;AAEF,MAAMc,cAAc,GAAGjC,GAAG,CAACkC,MAAM,CAAU,CAAC,CACzCC,WAAW,CAAC,gDAAgD,CAAC,CAC7DC,IAAI,CAAC;EACJC,IAAI,EAAErC,GAAG,CAACQ,MAAM,CAAC,CAAC,CACf8B,IAAI,CAAC,CAAC,CACNC,QAAQ,CAAC,CAAC,CACVJ,WAAW,CACV,qEACF,CAAC;EACHK,KAAK,EAAExC,GAAG,CAACQ,MAAM,CAAC,CAAC,CAChB8B,IAAI,CAAC,CAAC,CACNC,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,iDAAiD,CAAC;EACjEM,SAAS,EAAEzC,GAAG,CAAC0C,OAAO,CAAC,CAAC,CACrBC,QAAQ,CAAC,CAAC,CACVhC,OAAO,CAAC,KAAK,CAAC,CACdwB,WAAW,CACV,8DACF;AACJ,CAAC,CAAC;AAEJ,MAAMS,oBAAoB,GAAG5C,GAAG,CAACkC,MAAM,CAAqB,CAAC,CAC1DC,WAAW,CAAC,qCAAqC,CAAC,CAClDC,IAAI,CAAC;EACJC,IAAI,EAAErC,GAAG,CAACQ,MAAM,CAAC,CAAC,CACf8B,IAAI,CAAC,CAAC,CACNC,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,6CAA6C,CAAC;EAC7DU,IAAI,EAAE7C,GAAG,CAACQ,MAAM,CAAC,CAAC,CACf8B,IAAI,CAAC,CAAC,CACNC,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,qDAAqD,CAAC;EACrEW,OAAO,EAAE9C,GAAG,CAACQ,MAAM,CAAC,CAAC,CAClB8B,IAAI,CAAC,CAAC,CACNC,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,uDAAuD;AACxE,CAAC,CAAC;AAEJ,MAAMY,oBAAoB,GAAG/C,GAAG,CAACkC,MAAM,CAAqB,CAAC,CAC1DC,WAAW,CAAC,qCAAqC,CAAC,CAClDC,IAAI,CAAC;EACJS,IAAI,EAAE7C,GAAG,CAACQ,MAAM,CAAC,CAAC,CACf8B,IAAI,CAAC,CAAC,CACNC,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,qDAAqD,CAAC;EACrEa,KAAK,EAAEhD,GAAG,CAACQ,MAAM,CAAC,CAAC,CAChB8B,IAAI,CAAC,CAAC,CACNC,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,qCAAqC,CAAC;EACrDW,OAAO,EAAE9C,GAAG,CAACQ,MAAM,CAAC,CAAC,CAClB8B,IAAI,CAAC,CAAC,CACNC,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,0DAA0D;AAC3E,CAAC,CAAC;AAEJ,MAAMc,gCAAgC,GACpCjD,GAAG,CAACkC,MAAM,CAA6B,CAAC,CACrCC,WAAW,CAAC,4CAA4C,CAAC,CACzDC,IAAI,CAAC;EACJS,IAAI,EAAE7C,GAAG,CAACQ,MAAM,CAAC,CAAC,CACf8B,IAAI,CAAC,CAAC,CACNY,KAAK,CAAC,aAAa,CAAC,CACpBX,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,sDAAsD,CAAC;EACtEa,KAAK,EAAEhD,GAAG,CAACQ,MAAM,CAAC,CAAC,CAChB8B,IAAI,CAAC,CAAC,CACNC,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,qCAAqC;AACtD,CAAC,CAAC;AAEN,MAAMgB,gCAAgC,GACpCnD,GAAG,CAACkC,MAAM,CAAkC,CAAC,CAC1CC,WAAW,CAAC,6CAA6C,CAAC,CAC1DC,IAAI,CAAC;EACJS,IAAI,EAAE7C,GAAG,CAACQ,MAAM,CAAC,CAAC,CACf8B,IAAI,CAAC,CAAC,CACNY,KAAK,CAAC,aAAa,CAAC,CACpBX,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,sDAAsD,CAAC;EACtEiB,MAAM,EAAEpD,GAAG,CAACQ,MAAM,CAAC,CAAC,CACjB0C,KAAK,CAACvB,SAAS,CAAC,CAChBW,IAAI,CAAC,CAAC,CACNC,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,oBAAoB,CAAC;EACpCkB,MAAM,EAAErD,GAAG,CAACQ,MAAM,CAAC,CAAC,CACjB8B,IAAI,CAAC,CAAC,CACNY,KAAK,CAACpB,aAAa,CAAC,CACpBS,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,yBAAyB;AAC1C,CAAC,CAAC;AAEN,MAAMmB,2BAA2B,GAAGtD,GAAG,CAACkC,MAAM,CAAwB,CAAC,CACpEC,WAAW,CAAC,uDAAuD,CAAC,CACpEC,IAAI,CAAC;EACJS,IAAI,EAAE7C,GAAG,CAACQ,MAAM,CAAC,CAAC,CACf8B,IAAI,CAAC,CAAC,CACNY,KAAK,CAAC,cAAc,CAAC,CACrBX,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,uDAAuD,CAAC;EACvEoB,MAAM,EAAEvD,GAAG,CAACQ,MAAM,CAAC,CAAC,CACjB8B,IAAI,CAAC,CAAC,CACNC,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,gDAAgD,CAAC;EAChEqB,IAAI,EAAExD,GAAG,CAACQ,MAAM,CAAC,CAAC,CACf8B,IAAI,CAAC,CAAC,CACNC,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,6CAA6C,CAAC;EAC7DsB,SAAS,EAAEzD,GAAG,CAACQ,MAAM,CAAC,CAAC,CACpB8B,IAAI,CAAC,CAAC,CACNC,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,+CAA+C;AAChE,CAAC,CAAC;AAEJ,MAAMuB,kBAAkB,GAAG1D,GAAG,CAACkC,MAAM,CAAmB,CAAC,CACtDC,WAAW,CAAC,kDAAkD,CAAC,CAC/DC,IAAI,CAAC;EACJuB,aAAa,EAAE3D,GAAG,CAACQ,MAAM,CAAC,CAAC,CACxB8B,IAAI,CAAC,CAAC,CACNC,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,kCAAkC,CAAC;EAClDyB,oBAAoB,EAAE5D,GAAG,CAACQ,MAAM,CAAC,CAAC,CAC/B8B,IAAI,CAAC,CAAC,CACNC,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,2DAA2D,CAAC;EAC3E0B,WAAW,EAAE7D,GAAG,CAACQ,MAAM,CAAC,CAAC,CACtB8B,IAAI,CAAC,CAAC,CACNK,QAAQ,CAAC,CAAC,CACVR,WAAW,CACV,kEACF;AACJ,CAAC,CAAC;AAEJ,MAAM2B,wBAAwB,GAAG9D,GAAG,CAACkC,MAAM,CAAqB,CAAC,CAC9DC,WAAW,CAAC,kDAAkD,CAAC,CAC/DC,IAAI,CAAC;EACJjB,EAAE,EAAET,QAAQ,CAACyB,WAAW,CAAC,gDAAgD,CAAC;EAC1E4B,WAAW,EAAE/D,GAAG,CAACQ,MAAM,CAAC,CAAC,CACtB8B,IAAI,CAAC,CAAC,CACNC,QAAQ,CAAC,CAAC,CACVW,KAAK,CAACtC,cAAc,CAAC,CACrBuB,WAAW,CAAC,kCAAkC;AACnD,CAAC,CAAC;AAEJ,MAAM6B,eAAe,GAAGhE,GAAG,CAACkC,MAAM,CAAgB,CAAC,CAChDC,WAAW,CAAC,sDAAsD,CAAC,CACnEC,IAAI,CAAC;EACJ6B,KAAK,EAAErB,oBAAoB,CAACT,WAAW,CACrC,kDACF,CAAC;EACD+B,QAAQ,EAAElE,GAAG,CAACQ,MAAM,CAAC,CAAC,CACnB8B,IAAI,CAAC,CAAC,CACNC,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,2DAA2D,CAAC;EAC3Ea,KAAK,EAAEhD,GAAG,CAACmE,YAAY,CAAC,CAAC,CACtBC,GAAG,CAACrB,oBAAoB,EAAEO,2BAA2B,CAAC,CACtDnB,WAAW,CACV,mEACF,CAAC;EACH0B,WAAW,EAAE7D,GAAG,CAACQ,MAAM,CAAC,CAAC,CACtB8B,IAAI,CAAC,CAAC,CACNK,QAAQ,CAAC,CAAC,CACVR,WAAW,CACV,kEACF;AACJ,CAAC,CAAC;AAEJ,MAAMkC,qBAAqB,GAAGrE,GAAG,CAACkC,MAAM,CAAkB,CAAC,CACxDC,WAAW,CAAC,sBAAsB,CAAC,CACnCC,IAAI,CAAC;EACJjB,EAAE,EAAET,QAAQ,CAACyB,WAAW,CACtB,oDACF,CAAC;EACDmC,WAAW,EAAEtE,GAAG,CAACQ,MAAM,CAAC,CAAC,CACtB8B,IAAI,CAAC,CAAC,CACNY,KAAK,CAAC9B,oBAAoB,CAAC,CAC3BmB,QAAQ,CAAC,CAAC,CACVJ,WAAW,CACV,iEACF,CAAC;EACH+B,QAAQ,EAAElE,GAAG,CAACQ,MAAM,CAAC,CAAC,CACnB8B,IAAI,CAAC,CAAC,CACNC,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,2DAA2D,CAAC;EAC3Ea,KAAK,EAAEhD,GAAG,CAACmE,YAAY,CAAC,CAAC,CACtBC,GAAG,CACFnB,gCAAgC,EAChCE,gCAAgC,EAChCG,2BACF,CAAC,CACAnB,WAAW,CACV,mEACF;AACJ,CAAC,CAAC;AAEJ,MAAMoC,oBAAoB,GAAGvE,GAAG,CAACkC,MAAM,CAAqB,CAAC,CAC1DC,WAAW,CAAC,qDAAqD,CAAC,CAClEC,IAAI,CAAC;EACJpB,UAAU,EAAEhB,GAAG,CAACwE,KAAK,CAAC,CAAC,CACpBzC,KAAK,CACJ/B,GAAG,CAACmE,YAAY,CAAC,CAAC,CAACC,GAAG,CACpBJ,eAAe,EACfN,kBAAkB,EAClB1D,GAAG,CAACyE,IAAI,CAAC,uBAAuB,CAClC,CACF,CAAC,CACAtC,WAAW,CAAC,2DAA2D;AAC5E,CAAC,CAAC,CACDhB,EAAE,CAAC,sBAAsB,CAAC;AAE7B,MAAMuD,qBAAqB,GAAG1E,GAAG,CAACkC,MAAM,CAAsB,CAAC,CAC5DC,WAAW,CAAC,sDAAsD,CAAC,CACnEC,IAAI,CAAC;EACJC,IAAI,EAAErC,GAAG,CAACQ,MAAM,CAAC,CAAC,CACf8B,IAAI,CAAC,CAAC,CACNC,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,yCAAyC,CAAC;EACzDnB,UAAU,EAAEhB,GAAG,CAACwE,KAAK,CAAC,CAAC,CACpBzC,KAAK,CACJ/B,GAAG,CAACmE,YAAY,CAAC,CAAC,CAACC,GAAG,CACpBJ,eAAe,EACfN,kBAAkB,EAClBa,oBACF,CACF,CAAC,CACApC,WAAW,CACV,gEACF;AACJ,CAAC,CAAC;AAEJ,MAAMwC,sBAAsB,GAAG3E,GAAG,CAACkC,MAAM,CAAmB,CAAC,CAC1DC,WAAW,CAAC,qDAAqD,CAAC,CAClEC,IAAI,CAAC;EACJC,IAAI,EAAErC,GAAG,CAACQ,MAAM,CAAC,CAAC,CACf8B,IAAI,CAAC,CAAC,CACNC,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,oDAAoD,CAAC;EACpEyC,WAAW,EAAE5E,GAAG,CAACQ,MAAM,CAAC,CAAC,CACtB8B,IAAI,CAAC,CAAC,CACNH,WAAW,CAAC,2CAA2C,CAAC;EAC3Da,KAAK,EAAE0B,qBAAqB,CACzBnC,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,mCAAmC;AACpD,CAAC,CAAC;AAEJ,OAAO,MAAM0C,wBAAwB,GAAG7E,GAAG,CAACkC,MAAM,CAAqB,CAAC,CACrEC,WAAW,CAAC,qDAAqD,CAAC,CAClEC,IAAI,CAAC;EACJjB,EAAE,EAAET,QAAQ,CAACyB,WAAW,CAAC,qCAAqC,CAAC;EAC/DyC,WAAW,EAAE5E,GAAG,CAACQ,MAAM,CAAC,CAAC,CACtB8B,IAAI,CAAC,CAAC,CACNH,WAAW,CAAC,2CAA2C,CAAC;EAC3D0B,WAAW,EAAE7D,GAAG,CAACQ,MAAM,CAAC,CAAC,CACtBmC,QAAQ,CAAC,CAAC,CACVR,WAAW,CACV,kEACF,CAAC;EACHnB,UAAU,EAAEhB,GAAG,CAACwE,KAAK,CAAuB,CAAC,CAC1CzC,KAAK,CACJ/B,GAAG,CAACmE,YAAY,CAAC,CAAC,CAACC,GAAG,CAACC,qBAAqB,EAAEP,wBAAwB,CACxE,CAAC,CACA3B,WAAW,CAAC,6CAA6C;AAC9D,CAAC,CAAC,CACDA,WAAW,CAAC,+BAA+B,CAAC;AAE/C,OAAO,MAAM2C,eAAe,GAAG9E,GAAG,CAACkC,MAAM,CAAe,CAAC,CACtDC,WAAW,CAAC,0DAA0D,CAAC,CACvEC,IAAI,CAAC;EACJjB,EAAE,EAAEZ,gBAAgB,CAAC4B,WAAW,CAAC,qCAAqC,CAAC;EACvEU,IAAI,EAAE7C,GAAG,CAACQ,MAAM,CAAgB,CAAC,CAC9B8B,IAAI,CAAC,CAAC,CACNC,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,2DAA2D,CAAC;EAC3E4C,gBAAgB,EAAE/E,GAAG,CAACQ,MAAM,CAAC,CAAC,CAC3B8B,IAAI,CAAC,CAAC,CACNK,QAAQ,CAAC,CAAC,CACVR,WAAW,CAAC,4CAA4C,CAAC;EAC5DE,IAAI,EAAErC,GAAG,CAACgF,IAAI,CAAC,MAAM,EAAE;IACrBC,EAAE,EAAEjF,GAAG,CAACQ,MAAM,CAAC,CAAC,CAAC0C,KAAK,CACpB/C,aAAa,CAAC+E,OAAO,EACrB/E,aAAa,CAACgF,IAAI,EAClBhF,aAAa,CAACiF,SAAS,EACvBjF,aAAa,CAACkF,QAChB,CAAC;IACDC,IAAI,EAAEtF,GAAG,CAACQ,MAAM,CAAC,CAAC,CACf8B,IAAI,CAAC,CAAC,CACNiD,OAAO,CAAC,aAAa,CAAC,CACtB5C,QAAQ,CAAC,CAAC,CACVR,WAAW,CAAC,iDAAiD,CAAC;IACjEqD,SAAS,EAAExF,GAAG,CAACQ,MAAM,CAAC,CAAC,CACpB8B,IAAI,CAAC,CAAC,CACNiD,OAAO,CAAC,aAAa,CAAC,CACtBpD,WAAW,CAAC,wDAAwD;EACzE,CAAC,CAAC;EACFK,KAAK,EAAExC,GAAG,CAACgF,IAAI,CAAC,MAAM,EAAE;IACtBC,EAAE,EAAEjF,GAAG,CAACQ,MAAM,CAAC,CAAC,CAAC0C,KAAK,CACpB/C,aAAa,CAAC+E,OAAO,EACrB/E,aAAa,CAACgF,IAAI,EAClBhF,aAAa,CAACiF,SAAS,EACvBjF,aAAa,CAACkF,QAChB,CAAC;IACDC,IAAI,EAAEtF,GAAG,CAACQ,MAAM,CAAC,CAAC,CACf8B,IAAI,CAAC,CAAC,CACNK,QAAQ,CAAC,CAAC,CACVR,WAAW,CAAC,4CAA4C,CAAC;IAC5DqD,SAAS,EAAExF,GAAG,CAACQ,MAAM,CAAC,CAAC,CACpB8B,IAAI,CAAC,CAAC,CACNmD,KAAK,CAAC,EAAE,CAAC,CACTtD,WAAW,CAAC,qCAAqC;EACtD,CAAC,CAAC;EACFuD,IAAI,EAAE1F,GAAG,CAACQ,MAAM,CAAC,CAAC,CACf8B,IAAI,CAAC,CAAC,CACNmD,KAAK,CAAC,EAAE,CAAC,CACT9C,QAAQ,CAAC,CAAC,CACVR,WAAW,CACV,8DACF,CAAC;EACHwD,OAAO,EAAE3F,GAAG,CAACkC,MAAM,CAAC;IAClB0D,IAAI,EAAE5F,GAAG,CAAC6F,MAAM,CAAC,CAAC,CACfC,KAAK,CAAC,EAAE,CAAC,CACT3D,WAAW,CAAC,wCAAwC,CAAC;IACxD4D,QAAQ,EAAE/F,GAAG,CAAC6F,MAAM,CAAC,CAAC,CACnBC,KAAK,CAAC,EAAE,CAAC,CACT3D,WAAW,CAAC,gDAAgD,CAAC;IAChE6D,aAAa,EAAEhG,GAAG,CAAC6F,MAAM,CAAC,CAAC,CACxBC,KAAK,CAAC,EAAE,CAAC,CACT3D,WAAW,CAAC,kDAAkD,CAAC;IAClE8D,eAAe,EAAEjG,GAAG,CAAC6F,MAAM,CAAC,CAAC,CAC1BC,KAAK,CAAC,EAAE,CAAC,CACT3D,WAAW,CAAC,oDAAoD,CAAC;IACpE+D,uBAAuB,EAAElG,GAAG,CAACQ,MAAM,CAAC,CAAC,CAClC8B,IAAI,CAAC,CAAC,CACNmD,KAAK,CAAC,EAAE,CAAC,CACTtD,WAAW,CAAC,8CAA8C,CAAC;IAC9DgE,wBAAwB,EAAEnG,GAAG,CAACkC,MAAM,CAAmB,CAAC,CACrDkE,OAAO,CAAC,IAAI,CAAC,CACbzD,QAAQ,CAAC,CAAC,CACVR,WAAW,CAAC,qDAAqD;EACtE,CAAC,CAAC,CACCxB,OAAO,CAAC,CAAC,CAAC,CAAC,CACXyF,OAAO,CAAC,IAAI,CAAC,CACbjE,WAAW,CAAC,0CAA0C,CAAC;EAC1DkE,MAAM,EAAErG,GAAG,CAACkC,MAAM,CAAC;IACjBoE,GAAG,EAAEtG,GAAG,CAAC6F,MAAM,CAAC,CAAC,CACdC,KAAK,CAAC,EAAE,CAAC,CACT3D,WAAW,CAAC,wCAAwC,CAAC;IACxDoE,GAAG,EAAEvG,GAAG,CAAC6F,MAAM,CAAC,CAAC,CACdC,KAAK,CAAC,EAAE,CAAC,CACT3D,WAAW,CAAC,wCAAwC,CAAC;IACxDqE,MAAM,EAAExG,GAAG,CAAC6F,MAAM,CAAC,CAAC,CACjBC,KAAK,CAAC,EAAE,CAAC,CACT3D,WAAW,CAAC,sCAAsC;EACvD,CAAC,CAAC,CACCiE,OAAO,CAAC,IAAI,CAAC,CACbzF,OAAO,CAAC,CAAC,CAAC,CAAC,CACXwB,WAAW,CAAC,oCAAoC,CAAC;EACpDN,IAAI,EAAE7B,GAAG,CAACQ,MAAM,CAAC,CAAC,CACf8B,IAAI,CAAC,CAAC,CACNK,QAAQ,CAAC,CAAC,CACVR,WAAW,CACV,iEACF;AACJ,CAAC,CAAC,CACDiE,OAAO,CAAC,IAAI,CAAC;AAEhB,OAAO,MAAMK,iBAAiB,GAAG3B,eAAe,CAC7C1C,IAAI,CAAC;EACJjB,EAAE,EAAET,QAAQ,CAACyB,WAAW,CAAC,qCAAqC,CAAC;EAC/DN,IAAI,EAAE7B,GAAG,CAACQ,MAAM,CAAC,CAAC,CACf0C,KAAK,CAACvB,SAAS,CAAC,CAChBgB,QAAQ,CAAC,CAAC,CACVR,WAAW,CACV,yEACF;AACJ,CAAC,CAAC,CACDA,WAAW,CAAC,+BAA+B,CAAC;AAE/C,OAAO,MAAMuE,yBAAyB,GAAGD,iBAAiB,CAACrE,IAAI,CAAC;EAC9DS,IAAI,EAAE7C,GAAG,CAACQ,MAAM,CAAgC,CAAC,CAC9C8B,IAAI,CAAC,CAAC,CACNY,KAAK,CAAC/C,aAAa,CAACwG,eAAe,CAAC,CACpCpE,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,8CAA8C;AAC/D,CAAC,CAAC;AAEF,OAAO,MAAMyE,sBAAsB,GAAGH,iBAAiB,CAACrE,IAAI,CAAC;EAC3DS,IAAI,EAAE7C,GAAG,CAACQ,MAAM,CAAgB,CAAC,CAC9B8B,IAAI,CAAC,CAAC,CACNY,KAAK,CAAC/C,aAAa,CAAC+E,OAAO,CAAC,CAC5BhC,KAAK,CAAC/C,aAAa,CAACgF,IAAI,CAAC,CACzBjC,KAAK,CAAC/C,aAAa,CAACkF,QAAQ,CAAC,CAC7BnC,KAAK,CAAC/C,aAAa,CAACiF,SAAS,CAAC,CAC9BlC,KAAK,CAAC/C,aAAa,CAAC0G,IAAI,CAAC,CACzBtE,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,6DAA6D;AAC9E,CAAC,CAAC;AAEF,MAAM2E,UAAU,GAAG9G,GAAG,CAACkC,MAAM,CAAO,CAAC,CAClCC,WAAW,CAAC,8DAA8D,CAAC,CAC3EC,IAAI,CAAC;EACJ2E,IAAI,EAAE/G,GAAG,CAACQ,MAAM,CAAC,CAAC,CACf8B,IAAI,CAAC,CAAC,CACNC,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,qCAAqC,CAAC;EACrDjB,SAAS,EAAElB,GAAG,CAACQ,MAAM,CAAC,CAAC,CACpB8B,IAAI,CAAC,CAAC,CACNmD,KAAK,CAAC,EAAE,CAAC,CACT9C,QAAQ,CAAC,CAAC,CACVR,WAAW,CACV,iEACF,CAAC;EACH6E,QAAQ,EAAEhH,GAAG,CAACQ,MAAM,CAAC,CAAC,CACnB8B,IAAI,CAAC,CAAC,CACNK,QAAQ,CAAC,CAAC,CACVR,WAAW,CACV,kEACF;AACJ,CAAC,CAAC;AAEJ,MAAM8E,aAAa,GAAGjH,GAAG,CAACkC,MAAM,CAAgB,CAAC,CAC9CC,WAAW,CAAC,qDAAqD,CAAC,CAClEC,IAAI,CAAC;EACJC,IAAI,EAAErC,GAAG,CAACQ,MAAM,CAAC,CAAC,CACf8B,IAAI,CAAC,CAAC,CACNC,QAAQ,CAAC,CAAC,CACVJ,WAAW,CACV,+DACF,CAAC;EACHK,KAAK,EAAExC,GAAG,CAACQ,MAAM,CAAC,CAAC,CAChB8B,IAAI,CAAC,CAAC,CACNC,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,0CAA0C;AAC3D,CAAC,CAAC;AAEJ,MAAM+E,YAAY,GAAGlH,GAAG,CAACkC,MAAM,CAAe,CAAC,CAC5CC,WAAW,CAAC,2CAA2C,CAAC,CACxDC,IAAI,CAAC;EACJkE,GAAG,EAAEtG,GAAG,CAAC6F,MAAM,CAAC,CAAC,CACdC,KAAK,CAAC,EAAE,CAAC,CACTvD,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,wCAAwC,CAAC;EACxDoE,GAAG,EAAEvG,GAAG,CAAC6F,MAAM,CAAC,CAAC,CACdC,KAAK,CAAC,EAAE,CAAC,CACTvD,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,uCAAuC;AACxD,CAAC,CAAC;AAEJ,OAAO,MAAMgF,gBAAgB,GAAGnH,GAAG,CAACkC,MAAM,CAAS,CAAC,CACjDC,WAAW,CAAC,8CAA8C,CAAC,CAC3DC,IAAI,CAAC;EACJuD,OAAO,EAAEsB,aAAa,CACnB1E,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,uDAAuD,CAAC;EACvEkE,MAAM,EAAEa,YAAY,CACjB3E,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,sDAAsD;AACvE,CAAC,CAAC;AAEJ,MAAMiF,WAAW,GAAGpH,GAAG,CAACkC,MAAM,CAAQ,CAAC,CACpCC,WAAW,CAAC,uDAAuD,CAAC,CACpEC,IAAI,CAAC;EACJS,IAAI,EAAE7C,GAAG,CAACQ,MAAM,CAAC,CAAC,CACf8B,IAAI,CAAC,CAAC,CACNmD,KAAK,CAAC,MAAM,CAAC,CACblD,QAAQ,CAAC,CAAC,CACVJ,WAAW,CACV,6DACF,CAAC;EACHwD,OAAO,EAAE3F,GAAG,CAACkC,MAAM,CAAe,CAAC,CAChCC,WAAW,CAAC,4CAA4C,CAAC,CACzDC,IAAI,CAAC;IACJiF,MAAM,EAAErH,GAAG,CAACQ,MAAM,CAAC,CAAC,CACjB8B,IAAI,CAAC,CAAC,CACNmD,KAAK,CAAC,MAAM,CAAC,CACblD,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,oCAAoC,CAAC;IACpDmF,GAAG,EAAEtH,GAAG,CAACQ,MAAM,CAAC,CAAC,CACd8B,IAAI,CAAC,CAAC,CACNiF,GAAG,CAAC;MAAEC,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO;IAAE,CAAC,CAAC,CAClCjF,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,2CAA2C;EAC5D,CAAC;AACL,CAAC,CAAC;AAEJ,MAAMsF,YAAY,GAAGzH,GAAG,CAACkC,MAAM,CAAS,CAAC,CACtCC,WAAW,CACV,kEACF,CAAC,CACAC,IAAI,CAAC;EACJsF,MAAM,EAAEN,WAAW,CAChBzE,QAAQ,CAAC,CAAC,CACVR,WAAW,CAAC,iDAAiD,CAAC;EACjEwF,MAAM,EAAEP,WAAW,CAChBzE,QAAQ,CAAC,CAAC,CACVR,WAAW,CAAC,qDAAqD;AACtE,CAAC,CAAC;AAEJ,OAAO,MAAMyF,0BAA0B,GAAG5H,GAAG,CAACwE,KAAK,CAEjD,CAAC,CACAzC,KAAK,CACJ2E,yBAAyB,CAACnE,QAAQ,CAAC,CAAC,EACpCqE,sBAAsB,CAACjE,QAAQ,CAAC,CAClC,CAAC,CACAkF,MAAM,CAAC,MAAM,CAAC,CACdA,MAAM,CAAC,IAAI,CAAC,CACZvB,GAAG,CAAC,CAAC,CAAC,CACNC,GAAG,CAAC,CAAC,CAAC,CACNpE,WAAW,CAAC,0CAA0C,CAAC;;AAE1D;AACA;AACA;AACA;AACA,OAAO,MAAM2F,UAAU,GAAG9H,GAAG,CAACkC,MAAM,CAAO,CAAC,CACzCC,WAAW,CAAC,sDAAsD,CAAC,CACnEC,IAAI,CAAC;EACJjB,EAAE,EAAEZ,gBAAgB,CAAC4B,WAAW,CAAC,gCAAgC,CAAC;EAClE4E,IAAI,EAAE/G,GAAG,CAACQ,MAAM,CAAC,CAAC,CACf8B,IAAI,CAAC,CAAC,CACNC,QAAQ,CAAC,CAAC,CACVwF,QAAQ,CAAC,SAAS,CAAC,CACnB5F,WAAW,CACV,iEACF,CAAC;EACHK,KAAK,EAAExC,GAAG,CAACQ,MAAM,CAAC,CAAC,CAChB8B,IAAI,CAAC,CAAC,CACNC,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,6CAA6C,CAAC;EAC7D6F,OAAO,EAAEhI,GAAG,CAACQ,MAAM,CAAC,CAAC,CAAC8B,IAAI,CAAC,CAAC,CAACH,WAAW,CAAC,8BAA8B,CAAC;EACxE8F,UAAU,EAAEjI,GAAG,CAACQ,MAAM,CAAC,CAAC,CACrB8B,IAAI,CAAC,CAAC,CACNK,QAAQ,CAAC,CAAC,CACVR,WAAW,CAAC,wDAAwD,CAAC;EACxEX,UAAU,EAAExB,GAAG,CAACwE,KAAK,CAAe,CAAC,CAClCzC,KAAK,CAAC+C,eAAe,CAAC,CACtB+C,MAAM,CAAC,MAAM,CAAC,CACd1F,WAAW,CAAC,sCAAsC,CAAC;EACtD+F,MAAM,EAAElI,GAAG,CAACgF,IAAI,CAAC,YAAY,EAAE;IAC7BC,EAAE,EAAEjF,GAAG,CAACQ,MAAM,CAAC,CAAC,CAAC8B,IAAI,CAAC,CAAC,CAACY,KAAK,CAAC,sBAAsB,CAAC,CAACX,QAAQ,CAAC,CAAC;IAChE+C,IAAI,EAAE6B,gBAAgB,CACnB5E,QAAQ,CAAC,CAAC,CACVJ,WAAW,CACV,8EACF,CAAC;IACHqD,SAAS,EAAExF,GAAG,CAACmI,GAAG,CAAC,CAAC,CAACC,KAAK,CAAC;EAC7B,CAAC,CAAC;EACFlH,SAAS,EAAElB,GAAG,CAACQ,MAAM,CAAC,CAAC,CACpB8B,IAAI,CAAC,CAAC,CACNmD,KAAK,CAAC,EAAE,CAAC,CACT9C,QAAQ,CAAC,CAAC,CACVR,WAAW,CAAC,0DAA0D,CAAC;EAC1EkG,IAAI,EAAErI,GAAG,CAACwE,KAAK,CAAO,CAAC,CACpBzC,KAAK,CAAC+E,UAAU,CAAC,CACjBnG,OAAO,CAAC,EAAE,CAAC,CACXwB,WAAW,CAAC,2CAA2C,CAAC;EAC3DmG,MAAM,EAAEb,YAAY,CACjB9E,QAAQ,CAAC,CAAC,CACVR,WAAW,CAAC,0CAA0C,CAAC;EAC1DoG,IAAI,EAAEvI,GAAG,CAACQ,MAAM,CAAC,CAAC,CACf8B,IAAI,CAAC,CAAC,CACNK,QAAQ,CAAC,CAAC,CACVR,WAAW,CACV,8DACF;AACJ,CAAC,CAAC;;AAEJ;AACA;AACA;AACA,OAAO,MAAMqG,YAAY,GAAGV,UAAU,CACnCW,MAAM,CAAC;EACNtH,EAAE,EAAET,QAAQ,CAACyB,WAAW,CAAC,gCAAgC,CAAC;EAC1DK,KAAK,EAAExC,GAAG,CAACQ,MAAM,CAAC,CAAC,CAChB8B,IAAI,CAAC,CAAC,CACNmD,KAAK,CAAC,EAAE,CAAC,CACTlD,QAAQ,CAAC,CAAC,CACVJ,WAAW,CACV,mFACF,CAAC;EACHX,UAAU,EAAExB,GAAG,CAACgF,IAAI,CAAC,YAAY,EAAE;IACjC0D,MAAM,EAAE,CACN;MACEzD,EAAE,EAAEjF,GAAG,CAACQ,MAAM,CAAC,CAAC,CAAC8B,IAAI,CAAC,CAAC,CAACY,KAAK,CAAC7C,cAAc,CAACsI,UAAU,CAAC,CAACpG,QAAQ,CAAC,CAAC;MACnE+C,IAAI,EAAEsC;IACR,CAAC,CACF;IACDpC,SAAS,EAAExF,GAAG,CAACwE,KAAK,CAAe,CAAC,CACjCzC,KAAK,CAAC0E,iBAAiB,CAAC,CACxBoB,MAAM,CAAC,MAAM,CAAC,CACdA,MAAM,CAAC,IAAI,CAAC,CACZ1F,WAAW,CAAC,gCAAgC;EACjD,CAAC,CAAC;EACFjB,SAAS,EAAElB,GAAG,CAACQ,MAAM,CAAC,CAAC,CACpB8B,IAAI,CAAC,CAAC,CACNY,KAAK,CAACtC,cAAc,CAAC,CACrB+B,QAAQ,CAAC,CAAC,CACVR,WAAW,CAAC,0DAA0D;AAC3E,CAAC,CAAC,CACDA,WAAW,CAAC,0BAA0B,CAAC;AAE1C,MAAMyG,kBAAkB,GAAG5I,GAAG,CAACkC,MAAM,CAAO,CAAC,CAC1CC,WAAW,CAAC,mDAAmD,CAAC,CAChEC,IAAI,CAAC;EACJjB,EAAE,EAAET,QAAQ,CAACyB,WAAW,CAAC,qCAAqC,CAAC;EAC/D0G,IAAI,EAAE7I,GAAG,CAACQ,MAAM,CAAC,CAAC,CACf8B,IAAI,CAAC,CAAC,CACNmD,KAAK,CAAC,EAAE,CAAC,CACTtD,WAAW,CAAC,gCAAgC,CAAC;EAChDA,WAAW,EAAEnC,GAAG,CAACQ,MAAM,CAAC,CAAC,CACtB8B,IAAI,CAAC,CAAC,CACNmD,KAAK,CAAC,EAAE,CAAC,CACT9C,QAAQ,CAAC,CAAC,CACVR,WAAW,CAAC,mDAAmD,CAAC;EACnE2G,WAAW,EAAE9I,GAAG,CAACkC,MAAM,CAAsB,CAAC,CAC3CC,WAAW,CAAC,wDAAwD,CAAC,CACrEC,IAAI,CAAC;IACJZ,UAAU,EAAExB,GAAG,CAACwE,KAAK,CAAe,CAAC,CAClCjC,QAAQ,CAAC,CAAC,CACVR,KAAK,CAAC+C,eAAe,CAACsB,OAAO,CAAC,IAAI,CAAC,CAAC,CACpCyB,MAAM,CAAC,MAAM,CAAC,CACd1F,WAAW,CAAC,qCAAqC;EACtD,CAAC,CAAC,CACDQ,QAAQ,CAAC,CAAC;EACbzB,SAAS,EAAElB,GAAG,CAACQ,MAAM,CAAC,CAAC,CACpB8B,IAAI,CAAC,CAAC,CACNmD,KAAK,CAAC,EAAE,CAAC,CACT9C,QAAQ,CAAC,CAAC,CACVR,WAAW,CAAC,iDAAiD,CAAC;EACjEuD,IAAI,EAAE1F,GAAG,CAACkC,MAAM,CAAe,CAAC,CAC7BS,QAAQ,CAAC,CAAC,CACVP,IAAI,CAAC;IACJjB,EAAE,EAAET,QAAQ;IACZmI,IAAI,EAAE7I,GAAG,CAACQ,MAAM,CAAC,CAAC,CAAC8B,IAAI,CAAC;EAC1B,CAAC,CAAC,CACDH,WAAW,CAAC,6CAA6C;AAC9D,CAAC,CAAC;AAEJ,MAAM4G,oBAAoB,GAAGH,kBAAkB,CAC5CH,MAAM,CAAC;EACNzF,KAAK,EAAEhD,GAAG,CAACQ,MAAM,CAAC,CAAC,CAChB8B,IAAI,CAAC,CAAC,CACNC,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,gDAAgD;AACjE,CAAC,CAAC,CACDA,WAAW,CAAC,6BAA6B,CAAC;AAE7C,MAAM6G,oBAAoB,GAAGJ,kBAAkB,CAC5CH,MAAM,CAAC;EACNzF,KAAK,EAAEhD,GAAG,CAAC6F,MAAM,CAAC,CAAC,CAChBtD,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,iDAAiD;AAClE,CAAC,CAAC,CACDA,WAAW,CAAC,8BAA8B,CAAC;AAE9C,OAAO,MAAM8G,UAAU,GAAGjJ,GAAG,CAACkC,MAAM,CAAO,CAAC,CACzCC,WAAW,CAAC,gDAAgD,CAAC,CAC7DC,IAAI,CAAC;EACJjB,EAAE,EAAEZ,gBAAgB,CAAC4B,WAAW,CAAC,gCAAgC,CAAC;EAClEE,IAAI,EAAErC,GAAG,CAACQ,MAAM,CAAC,CAAC,CACf8B,IAAI,CAAC,CAAC,CACNC,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,kDAAkD,CAAC;EAClEK,KAAK,EAAExC,GAAG,CAACQ,MAAM,CAAC,CAAC,CAChB8B,IAAI,CAAC,CAAC,CACNC,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,mCAAmC,CAAC;EACnDU,IAAI,EAAE7C,GAAG,CAACQ,MAAM,CAAC,CAAC,CACf8B,IAAI,CAAC,CAAC,CACNC,QAAQ,CAAC,CAAC,CACVW,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CACzBf,WAAW,CAAC,8CAA8C,CAAC;EAC9DJ,KAAK,EAAE/B,GAAG,CAACgF,IAAI,CAAC,MAAM,EAAE;IACtBC,EAAE,EAAE,QAAQ;IACZK,IAAI,EAAEtF,GAAG,CAACwE,KAAK,CAAC,CAAC,CACdzC,KAAK,CAACgH,oBAAoB,CAAC,CAC3BlB,MAAM,CAAC,MAAM,CAAC,CACdA,MAAM,CAAC,OAAO,CAAC,CACfqB,QAAQ,CAAC;MACR,cAAc,EACZ;IACJ,CAAC,CAAC,CACD/G,WAAW,CAAC,mCAAmC,CAAC;IACnDqD,SAAS,EAAExF,GAAG,CAACwE,KAAK,CAAC,CAAC,CACnBzC,KAAK,CAACiH,oBAAoB,CAAC,CAC3BnB,MAAM,CAAC,MAAM,CAAC,CACdA,MAAM,CAAC,OAAO,CAAC,CACf1F,WAAW,CAAC,oCAAoC;EACrD,CAAC;AACH,CAAC,CAAC;;AAEJ;AACA;AACA;AACA,OAAO,MAAMgH,YAAY,GAAGF,UAAU,CACnC7G,IAAI,CAAC;EACJjB,EAAE,EAAET,QAAQ,CAACyB,WAAW,CAAC,gCAAgC;AAC3D,CAAC,CAAC,CACDA,WAAW,CAAC,0BAA0B,CAAC;AAE1C,MAAMiH,cAAc,GAAGpJ,GAAG,CAACkC,MAAM,CAA6B,CAAC,CAC5DC,WAAW,CAAC,qCAAqC,CAAC,CAClDC,IAAI,CAAC;EACJiH,YAAY,EAAErJ,GAAG,CAAC0C,OAAO,CAAC,CAAC,CACxB/B,OAAO,CAAC,KAAK,CAAC,CACdwB,WAAW,CAAC,4CAA4C,CAAC;EAC5DmF,GAAG,EAAEtH,GAAG,CAACgF,IAAI,CAAC,cAAc,EAAE;IAC5BC,EAAE,EAAEjF,GAAG,CAAC0C,OAAO,CAAC,CAAC,CAACQ,KAAK,CAAC,KAAK,CAAC;IAC9BoC,IAAI,EAAEtF,GAAG,CAACQ,MAAM,CAAC,CAAC,CACf8B,IAAI,CAAC,CAAC,CACNK,QAAQ,CAAC,CAAC,CACV8C,KAAK,CAAC,EAAE,CAAC,CACTtD,WAAW,CACV,mEACF;EACJ,CAAC,CAAC;EACFmH,YAAY,EAAEtJ,GAAG,CAACQ,MAAM,CAAC,CAAC,CACvB8B,IAAI,CAAC,CAAC,CACNiH,KAAK,CAAC;IACLC,IAAI,EAAE;MACJ/D,KAAK,EAAE;IACT;EACF,CAAC,CAAC,CACD9C,QAAQ,CAAC,CAAC,CACVR,WAAW,CAAC,sCAAsC;AACvD,CAAC,CAAC;AAEJ,MAAMsH,iBAAiB,GAAGzJ,GAAG,CAACkC,MAAM,CAAc,CAAC,CAChDC,WAAW,CAAC,uDAAuD,CAAC,CACpEC,IAAI,CAAC;EACJsH,KAAK,EAAE1J,GAAG,CAACQ,MAAM,CAAC,CAAC,CAChB8B,IAAI,CAAC,CAAC,CACNY,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CACtBf,WAAW,CAAC,kDAAkD;AACnE,CAAC,CAAC;AAEJ,MAAMwH,YAAY,GAAG3J,GAAG,CAACkC,MAAM,CAA2B,CAAC,CACxDC,WAAW,CAAC,0CAA0C,CAAC,CACvDC,IAAI,CAAC;EACJwH,QAAQ,EAAE5J,GAAG,CAACQ,MAAM,CAAC,CAAC,CACnB8B,IAAI,CAAC,CAAC,CACNY,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CACzBX,QAAQ,CAAC,CAAC,CACVJ,WAAW,CACV,wEACF,CAAC;EACH0H,OAAO,EAAE7J,GAAG,CAACQ,MAAM,CAAC,CAAC,CAClB8B,IAAI,CAAC,CAAC,CACNC,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,0CAA0C;AAC3D,CAAC,CAAC;;AAEJ;AACA;AACA;AACA;AACA,OAAO,MAAM2H,oBAAoB,GAAG9J,GAAG,CAACkC,MAAM,CAAiB,CAAC,CAC7DC,WAAW,CAAC,2DAA2D,CAAC,CACxEI,QAAQ,CAAC,CAAC,CACVH,IAAI,CAAC;EACJ2H,MAAM,EAAE/J,GAAG,CAACQ,MAAM,CAAC,CAAC,CACjB8B,IAAI,CAAC,CAAC,CACNmD,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CACjB9E,OAAO,CAAC,IAAI,CAAC,CACbwB,WAAW,CAAC,uCAAuC,CAAC;EACvDkE,MAAM,EAAErG,GAAG,CAAC6F,MAAM,CAAC,CAAC,CACjBmE,OAAO,CAAC,CAAC,CACT9G,KAAK,CAAC9C,aAAa,CAAC6J,EAAE,CAAC,CACvBtJ,OAAO,CAACP,aAAa,CAAC6J,EAAE,CAAC,CACzB9H,WAAW,CAAC,qCAAqC,CAAC;EACrDE,IAAI,EAAErC,GAAG,CAACQ,MAAM,CAAC,CAAC,CACf8B,IAAI,CAAC,CAAC,CACNmD,KAAK,CAAC,EAAE,CAAC,CACT9C,QAAQ,CAAC,CAAC,CACVR,WAAW,CAAC,kCAAkC,CAAC;EAClD+H,QAAQ,EAAEd,cAAc,CACrBzG,QAAQ,CAAC,CAAC,CACVR,WAAW,CAAC,kCAAkC,CAAC;EAClDgI,SAAS,EAAEnK,GAAG,CAACQ,MAAM,CAAC,CAAC,CACpB8B,IAAI,CAAC,CAAC,CACNK,QAAQ,CAAC,CAAC,CACVR,WAAW,CAAC,uDAAuD,CAAC;EACvEd,KAAK,EAAErB,GAAG,CAACwE,KAAK,CAAO,CAAC,CACrBjC,QAAQ,CAAC,CAAC,CACVR,KAAK,CAAC+F,UAAU,CAAC,CACjB3F,WAAW,CAAC,2BAA2B,CAAC,CACxC0F,MAAM,CAAC,MAAM,CAAC;EACjBuC,QAAQ,EAAEpK,GAAG,CAACwE,KAAK,CAAU,CAAC,CAC3BzC,KAAK,CAACE,cAAc,CAAC,CACrB4F,MAAM,CAAC,MAAM,CAAC,CACdA,MAAM,CAAC,OAAO,CAAC,CACftF,QAAQ,CAAC,CAAC,CACVJ,WAAW,CAAC,0CAA0C,CAAC;EAC1DnB,UAAU,EAAEhB,GAAG,CAACwE,KAAK,CAAmB,CAAC,CACtCzC,KAAK,CAAC4C,sBAAsB,CAAC,CAC7BkD,MAAM,CAAC,MAAM,CAAC,CACdA,MAAM,CAAC,aAAa,CAAC,CACrB1F,WAAW,CAAC,sCAAsC,CAAC;EACtDP,KAAK,EAAE5B,GAAG,CAACwE,KAAK,CAAO,CAAC,CACrBzC,KAAK,CAACkH,UAAU,CAAC,CACjBpB,MAAM,CAAC,MAAM,CAAC,CACdA,MAAM,CAAC,OAAO,CAAC,CACf1F,WAAW,CAAC,iDAAiD,CAAC;EACjEkI,QAAQ,EAAErK,GAAG,CAACkC,MAAM,CAAC;IAAEoI,CAAC,EAAEtK,GAAG,CAACmI,GAAG,CAAC;EAAE,CAAC,CAAC,CACnC/B,OAAO,CAAC,CAAC,CACTzD,QAAQ,CAAC,CAAC,CACVR,WAAW,CAAC,8BAA8B,CAAC;EAC9CoI,WAAW,EAAEvK,GAAG,CAACQ,MAAM,CAAC,CAAC,CACtB8B,IAAI,CAAC,CAAC,CACNmD,KAAK,CAAC,EAAE,CAAC,CACT9C,QAAQ,CAAC,CAAC,CACVR,WAAW,CAAC,4CAA4C,CAAC;EAC5DqI,WAAW,EAAExK,GAAG,CAACmI,GAAG,CAAC,CAAC,CACnBC,KAAK,CAAC,CAAC,CACPjG,WAAW,CAAC,iCAAiC,CAAC;EACjDsI,WAAW,EAAEhB,iBAAiB,CAC3B9G,QAAQ,CAAC,CAAC,CACVR,WAAW,CAAC,4BAA4B,CAAC;EAC5CuI,WAAW,EAAE1K,GAAG,CAACQ,MAAM,CAAC,CAAC,CACtB8B,IAAI,CAAC,CAAC,CACNiH,KAAK,CAAC;IAAEC,IAAI,EAAE;MAAE/D,KAAK,EAAE,CAAC,IAAI;IAAE;EAAE,CAAC,CAAC,CAClC9C,QAAQ,CAAC,CAAC,CACVR,WAAW,CAAC,+CAA+C,CAAC;EAC/DwI,MAAM,EAAEhB,YAAY,CACjBhH,QAAQ,CAAC,CAAC,CACVR,WAAW,CAAC,4CAA4C;AAC7D,CAAC,CAAC;AAEJ,OAAO,MAAMyI,sBAAsB,GAAGd,oBAAoB,CACvD1H,IAAI,CAAC;EACJiE,MAAM,EAAErG,GAAG,CAAC6F,MAAM,CAAC,CAAC,CACjBmE,OAAO,CAAC,CAAC,CACT9G,KAAK,CAAC9C,aAAa,CAACyK,EAAE,CAAC,CACvB1I,WAAW,CAAC,gCAAgC,CAAC;EAChDd,KAAK,EAAErB,GAAG,CAACwE,KAAK,CAAO,CAAC,CACrBzC,KAAK,CAACyG,YAAY,CAAC,CACnBjG,QAAQ,CAAC,CAAC,CACVsF,MAAM,CAAC,MAAM,CAAC,CACdA,MAAM,CAAC,IAAI,CAAC,CACZ1F,WAAW,CAAC,2BAA2B,CAAC;EAC3CP,KAAK,EAAE5B,GAAG,CAACwE,KAAK,CAAO,CAAC,CACrBzC,KAAK,CAACoH,YAAY,CAAC,CACnBtB,MAAM,CAAC,MAAM,CAAC,CACdA,MAAM,CAAC,OAAO,CAAC,CACfA,MAAM,CAAC,IAAI,CAAC,CACZ1F,WAAW,CAAC,2BAA2B,CAAC;EAC3CnB,UAAU,EAAEhB,GAAG,CAACwE,KAAK,CAAqB,CAAC,CACxCzC,KAAK,CAAC8C,wBAAwB,CAAC,CAC/BgD,MAAM,CAAC,IAAI,CAAC,CACZA,MAAM,CAAC,aAAa,CAAC,CACrB1F,WAAW,CAAC,sCAAsC;AACvD,CAAC,CAAC,CACDA,WAAW,CAAC,+BAA+B,CAAC;;AAE/C;AACA;AACA,OAAO,MAAM2I,MAAM,GAAGhB,oBAAoB","ignoreList":[]}
@@ -3,6 +3,11 @@ export let Engine = /*#__PURE__*/function (Engine) {
3
3
  Engine["V2"] = "V2";
4
4
  return Engine;
5
5
  }({});
6
+ export let SchemaVersion = /*#__PURE__*/function (SchemaVersion) {
7
+ SchemaVersion[SchemaVersion["V1"] = 1] = "V1";
8
+ SchemaVersion[SchemaVersion["V2"] = 2] = "V2";
9
+ return SchemaVersion;
10
+ }({});
6
11
 
7
12
  /**
8
13
  * Interface for `formDefinitionSchema` Joi schema
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":["Engine"],"sources":["../../../../src/form/form-definition/types.ts"],"sourcesContent":["import { type ComponentDef } from '~/src/components/types.js'\nimport { type Coordinator } from '~/src/conditions/enums.js'\nimport {\n type ConditionGroupDataV2,\n type ConditionsModelData\n} from '~/src/conditions/types.js'\nimport { type ControllerPath, type ControllerType } from '~/src/pages/enums.js'\n\nexport enum Engine {\n V1 = 'V1',\n V2 = 'V2'\n}\n\nexport interface Link {\n path: string\n condition?: string\n redirect?: string\n}\n\nexport interface EventOptions {\n method: string\n url: string\n}\n\nexport interface Event {\n type: string\n options: EventOptions\n}\n\nexport interface Events {\n onLoad?: Event\n onSave?: Event\n}\n\nexport interface PageBase {\n id?: string\n title: string\n path: string\n condition?: string\n events?: Events\n view?: string\n}\n\nexport interface RepeatOptions {\n name: string\n title: string\n}\n\nexport interface RepeatSchema {\n min: number\n max: number\n}\n\nexport interface Repeat {\n options: RepeatOptions\n schema: RepeatSchema\n}\n\nexport interface PageStart extends PageBase {\n path: ControllerPath.Start | string\n controller: ControllerType.Start\n section?: string | undefined\n next: Link[]\n components: ComponentDef[]\n}\n\nexport interface PageQuestion extends PageBase {\n controller?: ControllerType.Page\n section?: string | undefined\n next: Link[]\n components: ComponentDef[]\n}\n\nexport interface PageTerminal extends PageBase {\n controller?: ControllerType.Terminal\n section?: string | undefined\n next: Link[]\n components: ComponentDef[]\n}\n\nexport interface PageRepeat extends PageBase {\n controller: ControllerType.Repeat\n repeat: Repeat\n section?: string | undefined\n next: Link[]\n components: ComponentDef[]\n}\n\nexport interface PageFileUpload extends PageBase {\n controller: ControllerType.FileUpload\n section?: string | undefined\n next: Link[]\n components: ComponentDef[]\n}\n\nexport interface PageSummary extends PageBase {\n path: ControllerPath.Summary | string\n controller: ControllerType.Summary\n section?: undefined\n components?: ComponentDef[]\n}\n\nexport interface PageStatus extends PageBase {\n path: ControllerPath.Status | string\n controller: ControllerType.Status\n section?: undefined\n}\n\nexport type Page =\n | PageStart\n | PageQuestion\n | PageTerminal\n | PageFileUpload\n | PageRepeat\n | PageSummary\n | PageStatus\n\nexport interface Section {\n name: string\n title: string\n hideTitle?: boolean\n}\n\nexport interface Item {\n id?: string\n text: string\n value: string | number | boolean\n description?: string\n conditional?: { components: ComponentDef[] }\n condition?: string\n hint?: {\n id?: string\n text: string\n }\n}\n\nexport interface List {\n id?: string\n name: string\n title: string\n type: ListTypeContent\n items: Item[]\n}\n\nexport type ListTypeOption = 'bulleted' | 'numbered'\nexport type ListTypeContent = 'string' | 'number' | 'boolean'\n\nexport interface Feedback {\n feedbackForm?: boolean\n url?: string\n emailAddress?: string\n}\n\nexport interface PhaseBanner {\n phase?: 'alpha' | 'beta'\n feedbackUrl?: string\n}\n\nexport interface ConditionWrapper {\n name: string\n displayName: string\n value: ConditionsModelData\n}\n\nexport interface ConditionWrapperV2 {\n name: string\n displayName: string\n coordinator?: Coordinator\n conditions: ConditionGroupDataV2\n}\n\n/**\n * Interface for `formDefinitionSchema` Joi schema\n */\nexport interface FormDefinition {\n engine?: Engine\n pages: Page[]\n conditions: (ConditionWrapper | ConditionWrapperV2)[]\n lists: List[]\n sections: Section[]\n startPage?: string\n name?: string\n feedback?: Feedback\n phaseBanner?: PhaseBanner\n declaration?: string // Deprecated in v2\n skipSummary?: never\n metadata?: Record<string, unknown>\n outputEmail?: string\n output?: {\n audience: 'human' | 'machine'\n version: string\n }\n}\n"],"mappings":"AAQA,WAAYA,MAAM,0BAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAAA,OAANA,MAAM;AAAA;;AAmKlB;AACA;AACA","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":["Engine","SchemaVersion"],"sources":["../../../../src/form/form-definition/types.ts"],"sourcesContent":["import { type ComponentDef } from '~/src/components/types.js'\nimport { type Coordinator } from '~/src/conditions/enums.js'\nimport {\n type ConditionGroupDataV2,\n type ConditionsModelData\n} from '~/src/conditions/types.js'\nimport { type ControllerPath, type ControllerType } from '~/src/pages/enums.js'\n\nexport enum Engine {\n V1 = 'V1',\n V2 = 'V2'\n}\n\nexport enum SchemaVersion {\n V1 = 1,\n V2 = 2\n}\n\nexport interface Link {\n path: string\n condition?: string\n redirect?: string\n}\n\nexport interface EventOptions {\n method: string\n url: string\n}\n\nexport interface Event {\n type: string\n options: EventOptions\n}\n\nexport interface Events {\n onLoad?: Event\n onSave?: Event\n}\n\nexport interface PageBase {\n id?: string\n title: string\n path: string\n condition?: string\n events?: Events\n view?: string\n}\n\nexport interface RepeatOptions {\n name: string\n title: string\n}\n\nexport interface RepeatSchema {\n min: number\n max: number\n}\n\nexport interface Repeat {\n options: RepeatOptions\n schema: RepeatSchema\n}\n\nexport interface PageStart extends PageBase {\n path: ControllerPath.Start | string\n controller: ControllerType.Start\n section?: string | undefined\n next: Link[]\n components: ComponentDef[]\n}\n\nexport interface PageQuestion extends PageBase {\n controller?: ControllerType.Page\n section?: string | undefined\n next: Link[]\n components: ComponentDef[]\n}\n\nexport interface PageTerminal extends PageBase {\n controller?: ControllerType.Terminal\n section?: string | undefined\n next: Link[]\n components: ComponentDef[]\n}\n\nexport interface PageRepeat extends PageBase {\n controller: ControllerType.Repeat\n repeat: Repeat\n section?: string | undefined\n next: Link[]\n components: ComponentDef[]\n}\n\nexport interface PageFileUpload extends PageBase {\n controller: ControllerType.FileUpload\n section?: string | undefined\n next: Link[]\n components: ComponentDef[]\n}\n\nexport interface PageSummary extends PageBase {\n path: ControllerPath.Summary | string\n controller: ControllerType.Summary\n section?: undefined\n components?: ComponentDef[]\n}\n\nexport interface PageStatus extends PageBase {\n path: ControllerPath.Status | string\n controller: ControllerType.Status\n section?: undefined\n}\n\nexport type Page =\n | PageStart\n | PageQuestion\n | PageTerminal\n | PageFileUpload\n | PageRepeat\n | PageSummary\n | PageStatus\n\nexport interface Section {\n name: string\n title: string\n hideTitle?: boolean\n}\n\nexport interface Item {\n id?: string\n text: string\n value: string | number | boolean\n description?: string\n conditional?: { components: ComponentDef[] }\n condition?: string\n hint?: {\n id?: string\n text: string\n }\n}\n\nexport interface List {\n id?: string\n name: string\n title: string\n type: ListTypeContent\n items: Item[]\n}\n\nexport type ListTypeOption = 'bulleted' | 'numbered'\nexport type ListTypeContent = 'string' | 'number' | 'boolean'\n\nexport interface Feedback {\n feedbackForm?: boolean\n url?: string\n emailAddress?: string\n}\n\nexport interface PhaseBanner {\n phase?: 'alpha' | 'beta'\n feedbackUrl?: string\n}\n\nexport interface ConditionWrapper {\n name: string\n displayName: string\n value: ConditionsModelData\n}\n\nexport interface ConditionWrapperV2 {\n id: string\n displayName: string\n coordinator?: Coordinator\n conditions: ConditionGroupDataV2\n}\n\n/**\n * Interface for `formDefinitionSchema` Joi schema\n */\nexport interface FormDefinition {\n engine?: Engine\n schema?: SchemaVersion\n pages: Page[]\n conditions: (ConditionWrapper | ConditionWrapperV2)[]\n lists: List[]\n sections: Section[]\n startPage?: string\n name?: string\n feedback?: Feedback\n phaseBanner?: PhaseBanner\n declaration?: string // Deprecated in v2\n skipSummary?: never\n metadata?: Record<string, unknown>\n outputEmail?: string\n output?: {\n audience: 'human' | 'machine'\n version: string\n }\n}\n"],"mappings":"AAQA,WAAYA,MAAM,0BAANA,MAAM;EAANA,MAAM;EAANA,MAAM;EAAA,OAANA,MAAM;AAAA;AAKlB,WAAYC,aAAa,0BAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAbA,aAAa,CAAbA,aAAa;EAAA,OAAbA,aAAa;AAAA;;AAmKzB;AACA;AACA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/form/form-definition/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAA8B,MAAM,KAAK,CAAA;AAIhD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC9B,MAAM,2BAA2B,CAAA;AAelC,OAAO,EAEL,KAAK,kBAAkB,EAIvB,KAAK,cAAc,EAGnB,KAAK,IAAI,EACT,KAAK,IAAI,EAET,KAAK,MAAM,EAIZ,MAAM,qCAAqC,CAAA;AA2R5C,eAAO,MAAM,wBAAwB,sCAoBU,CAAA;AAE/C,eAAO,MAAM,eAAe,gCAkGZ,CAAA;AAEhB,eAAO,MAAM,iBAAiB,gCAUiB,CAAA;AAE/C,eAAO,MAAM,yBAAyB,gCAMpC,CAAA;AAEF,eAAO,MAAM,sBAAsB,gCAUjC,CAAA;AAoDF,eAAO,MAAM,gBAAgB,0BASzB,CAAA;AAyCJ,eAAO,MAAM,0BAA0B,kEAWmB,CAAA;AAE1D;;;GAGG;AACH,eAAO,MAAM,UAAU,wBAmDnB,CAAA;AAEJ;;GAEG;AACH,eAAO,MAAM,YAAY,wBA6BiB,CAAA;AAwD1C,eAAO,MAAM,UAAU,wBAkCnB,CAAA;AAEJ;;GAEG;AACH,eAAO,MAAM,YAAY,wBAIiB,CAAA;AAsD1C;;;GAGG;AACH,eAAO,MAAM,oBAAoB,kCAiE7B,CAAA;AAEJ,eAAO,MAAM,sBAAsB,kCAoBY,CAAA;AAI/C,eAAO,MAAM,MAAM,kCAAuB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/form/form-definition/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAA8B,MAAM,KAAK,CAAA;AAIhD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC9B,MAAM,2BAA2B,CAAA;AAelC,OAAO,EAGL,KAAK,kBAAkB,EAIvB,KAAK,cAAc,EAGnB,KAAK,IAAI,EACT,KAAK,IAAI,EAET,KAAK,MAAM,EAIZ,MAAM,qCAAqC,CAAA;AA4R5C,eAAO,MAAM,wBAAwB,sCAkBU,CAAA;AAE/C,eAAO,MAAM,eAAe,gCAkGZ,CAAA;AAEhB,eAAO,MAAM,iBAAiB,gCAUiB,CAAA;AAE/C,eAAO,MAAM,yBAAyB,gCAMpC,CAAA;AAEF,eAAO,MAAM,sBAAsB,gCAUjC,CAAA;AAoDF,eAAO,MAAM,gBAAgB,0BASzB,CAAA;AAyCJ,eAAO,MAAM,0BAA0B,kEAWmB,CAAA;AAE1D;;;GAGG;AACH,eAAO,MAAM,UAAU,wBAmDnB,CAAA;AAEJ;;GAEG;AACH,eAAO,MAAM,YAAY,wBA6BiB,CAAA;AAwD1C,eAAO,MAAM,UAAU,wBAkCnB,CAAA;AAEJ;;GAEG;AACH,eAAO,MAAM,YAAY,wBAIiB,CAAA;AAsD1C;;;GAGG;AACH,eAAO,MAAM,oBAAoB,kCAsE7B,CAAA;AAEJ,eAAO,MAAM,sBAAsB,kCAwBY,CAAA;AAI/C,eAAO,MAAM,MAAM,kCAAuB,CAAA"}
@@ -6,6 +6,10 @@ export declare enum Engine {
6
6
  V1 = "V1",
7
7
  V2 = "V2"
8
8
  }
9
+ export declare enum SchemaVersion {
10
+ V1 = 1,
11
+ V2 = 2
12
+ }
9
13
  export interface Link {
10
14
  path: string;
11
15
  condition?: string;
@@ -130,7 +134,7 @@ export interface ConditionWrapper {
130
134
  value: ConditionsModelData;
131
135
  }
132
136
  export interface ConditionWrapperV2 {
133
- name: string;
137
+ id: string;
134
138
  displayName: string;
135
139
  coordinator?: Coordinator;
136
140
  conditions: ConditionGroupDataV2;
@@ -140,6 +144,7 @@ export interface ConditionWrapperV2 {
140
144
  */
141
145
  export interface FormDefinition {
142
146
  engine?: Engine;
147
+ schema?: SchemaVersion;
143
148
  pages: Page[];
144
149
  conditions: (ConditionWrapper | ConditionWrapperV2)[];
145
150
  lists: List[];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/form/form-definition/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/form/form-definition/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.467",
3
+ "version": "3.0.469",
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
  "types": "dist/types/index.d.ts",
@@ -34,9 +34,9 @@
34
34
  "test:watch": "jest --color --watch"
35
35
  },
36
36
  "dependencies": {
37
- "marked": "^15.0.11",
37
+ "marked": "^15.0.12",
38
38
  "nanoid": "^5.0.7",
39
- "slug": "^10.0.0",
39
+ "slug": "^11.0.0",
40
40
  "uuid": "^11.1.0"
41
41
  },
42
42
  "devDependencies": {
@@ -8,6 +8,12 @@
8
8
  "default": "V1",
9
9
  "title": "Engine"
10
10
  },
11
+ "schema": {
12
+ "description": "Form schema version to use (1 or 2)",
13
+ "default": 1,
14
+ "const": 1,
15
+ "title": "Schema"
16
+ },
11
17
  "name": {
12
18
  "type": "string",
13
19
  "description": "Unique name identifying the form",
@@ -163,6 +163,11 @@
163
163
  "additionalProperties": false,
164
164
  "title": "Output"
165
165
  },
166
+ "schema": {
167
+ "description": "Form schema version to use (2)",
168
+ "const": 2,
169
+ "title": "Schema"
170
+ },
166
171
  "pages": {
167
172
  "type": "array",
168
173
  "description": "Pages schema for V2 forms",
@@ -1509,10 +1514,11 @@
1509
1514
  "type": "object",
1510
1515
  "description": "Condition schema for V2 forms",
1511
1516
  "properties": {
1512
- "name": {
1517
+ "id": {
1513
1518
  "type": "string",
1514
1519
  "description": "Unique identifier for the condition",
1515
- "title": "Name"
1520
+ "format": "uuid",
1521
+ "title": "Id"
1516
1522
  },
1517
1523
  "displayName": {
1518
1524
  "type": "string",
@@ -126,7 +126,7 @@ function convertConditionRefDataFromV2(
126
126
  }
127
127
 
128
128
  return {
129
- conditionName: refCondition.name,
129
+ conditionName: refCondition.id,
130
130
  conditionDisplayName: refCondition.displayName,
131
131
  coordinator
132
132
  }
@@ -157,10 +157,10 @@ export function convertConditionWrapperFromV2(
157
157
  }
158
158
 
159
159
  const newConditionWrapper: ConditionWrapper = {
160
- name: conditionWrapper.name,
160
+ name: conditionWrapper.id,
161
161
  displayName: conditionWrapper.displayName,
162
162
  value: {
163
- name: conditionWrapper.name,
163
+ name: conditionWrapper.id,
164
164
  conditions: conditionWrapper.conditions.map((condition, index) => {
165
165
  let newCondition: ConditionData | ConditionRefData
166
166
 
@@ -22,6 +22,7 @@ import {
22
22
  type RelativeDateValueData
23
23
  } from '~/src/conditions/types.js'
24
24
  import {
25
+ SchemaVersion,
25
26
  type ConditionWrapper,
26
27
  type ConditionWrapperV2,
27
28
  type Event,
@@ -48,7 +49,7 @@ const idSchema = idSchemaOptional.default(() => uuidV4())
48
49
  const conditionIdRef = Joi.ref('/conditions', {
49
50
  in: true,
50
51
  adjust: (conditions: ConditionWrapperV2[]) =>
51
- conditions.map((condition) => condition.name)
52
+ conditions.map((condition) => condition.id)
52
53
  })
53
54
 
54
55
  const componentIdRefSchema = Joi.ref('/pages', {
@@ -132,21 +133,22 @@ const conditionValueSchema = Joi.object<ConditionValueData>()
132
133
  .description('Human-readable version of the value for display purposes')
133
134
  })
134
135
 
135
- const condition2StringValueDataSchema = Joi.object<ConditionStringValueDataV2>()
136
- .description('String value specification for a condition')
137
- .keys({
138
- type: Joi.string()
139
- .trim()
140
- .valid('StringValue')
141
- .required()
142
- .description('Type of the condition value, should be "StringValue"'),
143
- value: Joi.string()
144
- .trim()
145
- .required()
146
- .description('The actual value to compare against')
147
- })
136
+ const conditionStringValueDataSchemaV2 =
137
+ Joi.object<ConditionStringValueDataV2>()
138
+ .description('String value specification for a condition')
139
+ .keys({
140
+ type: Joi.string()
141
+ .trim()
142
+ .valid('StringValue')
143
+ .required()
144
+ .description('Type of the condition value, should be "StringValue"'),
145
+ value: Joi.string()
146
+ .trim()
147
+ .required()
148
+ .description('The actual value to compare against')
149
+ })
148
150
 
149
- const condition2ListItemRefDataSchema =
151
+ const conditionListItemRefDataSchemaV2 =
150
152
  Joi.object<ConditionListItemRefValueDataV2>()
151
153
  .description('List item ref specification for a condition')
152
154
  .keys({
@@ -208,7 +210,7 @@ const conditionRefSchema = Joi.object<ConditionRefData>()
208
210
  )
209
211
  })
210
212
 
211
- const condition2RefDataSchema = Joi.object<ConditionRefDataV2>()
213
+ const conditionRefDataSchemaV2 = Joi.object<ConditionRefDataV2>()
212
214
  .description('Reference to a named condition defined elsewhere')
213
215
  .keys({
214
216
  id: idSchema.description('Unique identifier for the referenced condition'),
@@ -242,7 +244,7 @@ const conditionSchema = Joi.object<ConditionData>()
242
244
  )
243
245
  })
244
246
 
245
- const condition2DataSchema = Joi.object<ConditionDataV2>()
247
+ const conditionDataSchemaV2 = Joi.object<ConditionDataV2>()
246
248
  .description('Condition definition')
247
249
  .keys({
248
250
  id: idSchema.description(
@@ -261,8 +263,8 @@ const condition2DataSchema = Joi.object<ConditionDataV2>()
261
263
  .description('Comparison operator (equals, greaterThan, contains, etc.)'),
262
264
  value: Joi.alternatives()
263
265
  .try(
264
- condition2StringValueDataSchema,
265
- condition2ListItemRefDataSchema,
266
+ conditionStringValueDataSchemaV2,
267
+ conditionListItemRefDataSchemaV2,
266
268
  relativeDateValueDataSchema
267
269
  )
268
270
  .description(
@@ -323,9 +325,7 @@ const conditionWrapperSchema = Joi.object<ConditionWrapper>()
323
325
  export const conditionWrapperSchemaV2 = Joi.object<ConditionWrapperV2>()
324
326
  .description('Container for a named condition with its definition')
325
327
  .keys({
326
- name: Joi.string()
327
- .trim()
328
- .description('Unique identifier for the condition'),
328
+ id: idSchema.description('Unique identifier for the condition'),
329
329
  displayName: Joi.string()
330
330
  .trim()
331
331
  .description('Human-readable name for display in the UI'),
@@ -336,7 +336,7 @@ export const conditionWrapperSchemaV2 = Joi.object<ConditionWrapperV2>()
336
336
  ),
337
337
  conditions: Joi.array<ConditionGroupDataV2>()
338
338
  .items(
339
- Joi.alternatives().try(condition2DataSchema, condition2RefDataSchema)
339
+ Joi.alternatives().try(conditionDataSchemaV2, conditionRefDataSchemaV2)
340
340
  )
341
341
  .description('Array of conditions or condition references')
342
342
  })
@@ -842,6 +842,11 @@ export const formDefinitionSchema = Joi.object<FormDefinition>()
842
842
  .allow('V1', 'V2')
843
843
  .default('V1')
844
844
  .description('Form engine version to use (V1 or V2)'),
845
+ schema: Joi.number()
846
+ .integer()
847
+ .valid(SchemaVersion.V1)
848
+ .default(SchemaVersion.V1)
849
+ .description('Form schema version to use (1 or 2)'),
845
850
  name: Joi.string()
846
851
  .trim()
847
852
  .allow('')
@@ -902,6 +907,10 @@ export const formDefinitionSchema = Joi.object<FormDefinition>()
902
907
 
903
908
  export const formDefinitionV2Schema = formDefinitionSchema
904
909
  .keys({
910
+ schema: Joi.number()
911
+ .integer()
912
+ .valid(SchemaVersion.V2)
913
+ .description('Form schema version to use (2)'),
905
914
  pages: Joi.array<Page>()
906
915
  .items(pageSchemaV2)
907
916
  .required()
@@ -916,7 +925,7 @@ export const formDefinitionV2Schema = formDefinitionSchema
916
925
  .description('Lists schema for V2 forms'),
917
926
  conditions: Joi.array<ConditionWrapperV2>()
918
927
  .items(conditionWrapperSchemaV2)
919
- .unique('name')
928
+ .unique('id')
920
929
  .unique('displayName')
921
930
  .description('Named conditions used for form logic')
922
931
  })
@@ -11,6 +11,11 @@ export enum Engine {
11
11
  V2 = 'V2'
12
12
  }
13
13
 
14
+ export enum SchemaVersion {
15
+ V1 = 1,
16
+ V2 = 2
17
+ }
18
+
14
19
  export interface Link {
15
20
  path: string
16
21
  condition?: string
@@ -163,7 +168,7 @@ export interface ConditionWrapper {
163
168
  }
164
169
 
165
170
  export interface ConditionWrapperV2 {
166
- name: string
171
+ id: string
167
172
  displayName: string
168
173
  coordinator?: Coordinator
169
174
  conditions: ConditionGroupDataV2
@@ -174,6 +179,7 @@ export interface ConditionWrapperV2 {
174
179
  */
175
180
  export interface FormDefinition {
176
181
  engine?: Engine
182
+ schema?: SchemaVersion
177
183
  pages: Page[]
178
184
  conditions: (ConditionWrapper | ConditionWrapperV2)[]
179
185
  lists: List[]