@defra/forms-model 3.0.430 → 3.0.431
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +163 -1
- package/dist/module/common/pagination/index.js +2 -2
- package/dist/module/common/pagination/index.js.map +1 -1
- package/dist/module/common/search/index.js +4 -4
- package/dist/module/common/search/index.js.map +1 -1
- package/dist/module/common/sorting/index.js +2 -2
- package/dist/module/common/sorting/index.js.map +1 -1
- package/dist/module/form/form-definition/index.js +156 -156
- package/dist/module/form/form-definition/index.js.map +1 -1
- package/dist/module/form/form-editor/index.js +42 -42
- package/dist/module/form/form-editor/index.js.map +1 -1
- package/dist/module/form/form-manager/index.js +3 -3
- package/dist/module/form/form-manager/index.js.map +1 -1
- package/dist/module/form/form-metadata/index.js +34 -34
- package/dist/module/form/form-metadata/index.js.map +1 -1
- package/dist/module/form/form-submission/index.js +13 -13
- package/dist/module/form/form-submission/index.js.map +1 -1
- package/dist/module/types/joi-to-json.d.js +2 -0
- package/dist/module/types/joi-to-json.d.js.map +1 -0
- package/dist/types/common/pagination/index.d.ts.map +1 -1
- package/dist/types/common/search/index.d.ts.map +1 -1
- package/dist/types/common/sorting/index.d.ts.map +1 -1
- package/dist/types/form/form-definition/index.d.ts.map +1 -1
- package/dist/types/form/form-editor/index.d.ts +12 -12
- package/dist/types/form/form-editor/index.d.ts.map +1 -1
- package/dist/types/form/form-manager/index.d.ts.map +1 -1
- package/dist/types/form/form-metadata/index.d.ts.map +1 -1
- package/dist/types/form/form-submission/index.d.ts.map +1 -1
- package/package.json +6 -4
- package/scripts/generate-schemas.js +238 -0
- package/scripts/schema-modules/constants.js +39 -0
- package/scripts/schema-modules/schema-processors.js +109 -0
- package/scripts/schema-modules/schema-simplifiers.js +351 -0
- package/scripts/schema-modules/title-processors.js +327 -0
- package/scripts/schema-modules/types.js +21 -0
- package/scripts/schema-modules/utils.js +41 -0
- package/src/common/pagination/index.ts +8 -1
- package/src/common/search/index.ts +17 -3
- package/src/common/sorting/index.ts +8 -2
- package/src/form/form-definition/index.ts +567 -238
- package/src/form/form-editor/index.ts +202 -29
- package/src/form/form-manager/index.ts +11 -2
- package/src/form/form-metadata/index.ts +118 -40
- package/src/form/form-submission/index.ts +33 -10
- package/src/types/joi-to-json.d.ts +15 -0
@@ -6,46 +6,46 @@ export let QuestionTypeSubGroup = /*#__PURE__*/function (QuestionTypeSubGroup) {
|
|
6
6
|
QuestionTypeSubGroup["ListSubGroup"] = "listSub";
|
7
7
|
return QuestionTypeSubGroup;
|
8
8
|
}({});
|
9
|
-
export const pageTypeSchema = Joi.string().required().valid('question', 'guidance');
|
10
|
-
export const questionTypeSchema = Joi.string().required().valid(QuestionTypeSubGroup.WrittenAnswerSubGroup, QuestionTypeSubGroup.DateSubGroup, ComponentType.UkAddressField, ComponentType.TelephoneNumberField, ComponentType.FileUploadField, ComponentType.EmailAddressField, QuestionTypeSubGroup.ListSubGroup, ComponentType.YesNoField, ComponentType.CheckboxesField, ComponentType.RadiosField, ComponentType.AutocompleteField);
|
11
|
-
export const questionTypeFullSchema = Joi.string().required().valid(ComponentType.TextField, ComponentType.MultilineTextField, ComponentType.NumberField, ComponentType.DatePartsField, ComponentType.MonthYearField, ComponentType.UkAddressField, ComponentType.TelephoneNumberField, ComponentType.FileUploadField, ComponentType.EmailAddressField, ComponentType.YesNoField, ComponentType.CheckboxesField, ComponentType.RadiosField, ComponentType.AutocompleteField);
|
12
|
-
export const writtenAnswerSubSchema = Joi.string().required().valid(ComponentType.TextField, ComponentType.MultilineTextField, ComponentType.NumberField);
|
9
|
+
export const pageTypeSchema = Joi.string().required().valid('question', 'guidance').description('Type of page - either a question page or guidance page');
|
10
|
+
export const questionTypeSchema = Joi.string().required().valid(QuestionTypeSubGroup.WrittenAnswerSubGroup, QuestionTypeSubGroup.DateSubGroup, ComponentType.UkAddressField, ComponentType.TelephoneNumberField, ComponentType.FileUploadField, ComponentType.EmailAddressField, QuestionTypeSubGroup.ListSubGroup, ComponentType.YesNoField, ComponentType.CheckboxesField, ComponentType.RadiosField, ComponentType.AutocompleteField).description('The high-level type of question, including grouped types');
|
11
|
+
export const questionTypeFullSchema = Joi.string().required().valid(ComponentType.TextField, ComponentType.MultilineTextField, ComponentType.NumberField, ComponentType.DatePartsField, ComponentType.MonthYearField, ComponentType.UkAddressField, ComponentType.TelephoneNumberField, ComponentType.FileUploadField, ComponentType.EmailAddressField, ComponentType.YesNoField, ComponentType.CheckboxesField, ComponentType.RadiosField, ComponentType.AutocompleteField).description('The specific component type to use for this question');
|
12
|
+
export const writtenAnswerSubSchema = Joi.string().required().valid(ComponentType.TextField, ComponentType.MultilineTextField, ComponentType.NumberField).description('Subtype for written answer questions');
|
13
13
|
export const dateSubSchema = Joi.string().required().valid(ComponentType.DatePartsField, ComponentType.MonthYearField);
|
14
|
-
export const listSubSchema = Joi.string().required().valid(ComponentType.YesNoField, ComponentType.CheckboxesField, ComponentType.RadiosField, ComponentType.AutocompleteField);
|
15
|
-
export const nameSchema = Joi.string().trim().required();
|
16
|
-
export const questionSchema = Joi.string().trim().required();
|
17
|
-
export const hintTextSchema = Joi.string().trim().optional().allow('');
|
18
|
-
export const questionOptionalSchema = Joi.string().trim().optional().valid('', 'true');
|
19
|
-
export const
|
20
|
-
export const
|
21
|
-
export const
|
22
|
-
export const
|
23
|
-
export const
|
24
|
-
export const
|
25
|
-
export const exactFilesSchema = Joi.number().empty('').integer().min(1).max(25);
|
26
|
-
export const minFilesSchema = Joi.number().empty('').integer().min(0).max(25);
|
27
|
-
export const maxFilesSchema = Joi.number().empty('').integer().min(1).max(25);
|
28
|
-
export const minSchema = Joi.number().empty('').integer();
|
29
|
-
export const maxSchema = Joi.number().empty('').integer();
|
30
|
-
export const minLengthSchema = Joi.number().empty('').integer().min(1);
|
31
|
-
export const maxLengthSchema = Joi.number().empty('').integer().min(1);
|
32
|
-
export const maxFutureSchema = Joi.number().empty('').integer().min(0);
|
33
|
-
export const maxPastSchema = Joi.number().empty('').integer().min(0);
|
34
|
-
export const precisionSchema = Joi.number().empty('').integer().min(0).max(5);
|
35
|
-
export const prefixSchema = Joi.string().trim().optional().allow('');
|
36
|
-
export const regexSchema = Joi.string().optional().allow('');
|
37
|
-
export const rowsSchema = Joi.number().empty('').integer().min(1);
|
38
|
-
export const suffixSchema = Joi.string().trim().optional().allow('');
|
39
|
-
export const classesSchema = Joi.string().trim().optional().allow('');
|
40
|
-
export const fileTypesSchema = Joi.array().items(Joi.string()).single().empty(null).default([]);
|
41
|
-
export const documentTypesSchema = Joi.array().items(Joi.string()).single().empty(null).default([]);
|
42
|
-
export const imageTypesSchema = Joi.array().items(Joi.string()).single().empty(null).default([]);
|
14
|
+
export const listSubSchema = Joi.string().required().valid(ComponentType.YesNoField, ComponentType.CheckboxesField, ComponentType.RadiosField, ComponentType.AutocompleteField).description('Subtype for date-related questions');
|
15
|
+
export const nameSchema = Joi.string().trim().required().description('Unique identifier for the field');
|
16
|
+
export const questionSchema = Joi.string().trim().required().description('The question text displayed to the user');
|
17
|
+
export const hintTextSchema = Joi.string().trim().optional().allow('').description('Optional guidance text displayed below the question');
|
18
|
+
export const questionOptionalSchema = Joi.string().trim().optional().valid('', 'true').description('Indicates whether a question is optional. Empty string or "true" values are accepted.');
|
19
|
+
export const exactFilesSchema = Joi.number().empty('').integer().min(1).max(25).description('Specifies the exact number of files required for upload. Must be between 1 and 25.');
|
20
|
+
export const minFilesSchema = Joi.number().empty('').integer().min(0).max(25).description('Minimum number of files required for upload. Must be between 0 and 25.');
|
21
|
+
export const maxFilesSchema = Joi.number().empty('').integer().min(1).max(25).description('Maximum number of files allowed for upload. Must be between 1 and 25.');
|
22
|
+
export const fileTypesSchema = Joi.array().items(Joi.string()).single().empty(null).default([]).description('Array of allowed file types. Can be provided as a single value or an array.');
|
23
|
+
export const documentTypesSchema = Joi.array().items(Joi.string()).single().empty(null).default([]).description('Array of allowed document types. Can be provided as a single value or an array.');
|
24
|
+
export const imageTypesSchema = Joi.array().items(Joi.string()).single().empty(null).default([]).description('Array of allowed image types. Can be provided as a single value or an array.');
|
43
25
|
export const tabularDataTypesSchema = Joi.array().items(Joi.string()).single().empty(null).default([]);
|
44
|
-
export const enhancedActionSchema = Joi.string().trim().optional().allow('');
|
45
|
-
export const radioIdSchema = Joi.string().trim().optional().allow('');
|
46
|
-
export const radioLabelSchema = Joi.string().trim().required();
|
47
|
-
export const radioHintSchema = Joi.string().trim().optional().allow('');
|
48
|
-
export const radioValueSchema = Joi.string().trim().optional().allow('');
|
26
|
+
export const enhancedActionSchema = Joi.string().trim().optional().allow('').description('Action field that can include enhanced functionality');
|
27
|
+
export const radioIdSchema = Joi.string().trim().optional().allow('').description('Unique identifier for radio options');
|
28
|
+
export const radioLabelSchema = Joi.string().trim().required().description('The visible text shown next to radio options');
|
29
|
+
export const radioHintSchema = Joi.string().trim().optional().allow('').description('Optional hint text displayed with radio buttons to provide additional guidance');
|
30
|
+
export const radioValueSchema = Joi.string().trim().optional().allow('').description('Array of allowed tabular data types. Can be provided as a single value or an array.');
|
31
|
+
export const shortDescriptionSchema = Joi.string().trim().required().description('Brief description of the question for internal use');
|
32
|
+
export const pageHeadingAndGuidanceSchema = Joi.string().trim().optional().description('Combined heading and guidance for the page');
|
33
|
+
export const pageHeadingSchema = Joi.string().trim().required().description('Main heading displayed at the top of the page');
|
34
|
+
export const guidanceTextSchema = Joi.string().trim().description('Guidance text to assist users in completing the page');
|
35
|
+
export const needDeclarationSchema = Joi.string().trim().required().description('Whether a declaration is needed');
|
36
|
+
export const declarationTextSchema = Joi.string().trim().required().description('Text of the declaration that users must agree to');
|
37
|
+
export const minSchema = Joi.number().empty('').integer().description('Minimum value for numeric inputs');
|
38
|
+
export const maxSchema = Joi.number().empty('').integer().description('Maximum value for numeric inputs');
|
39
|
+
export const minLengthSchema = Joi.number().empty('').integer().min(1).description('Minimum character length for text inputs');
|
40
|
+
export const maxLengthSchema = Joi.number().empty('').integer().min(1).description('Maximum character length for text inputs');
|
41
|
+
export const maxFutureSchema = Joi.number().empty('').integer().min(1).description('Maximum days in the future allowed for date inputs');
|
42
|
+
export const maxPastSchema = Joi.number().empty('').integer().min(1).description('Maximum days in the past allowed for date inputs');
|
43
|
+
export const precisionSchema = Joi.number().empty('').integer().min(1).description('Decimal precision for numeric inputs');
|
44
|
+
export const prefixSchema = Joi.string().trim().optional().allow('').description('Text to display before the input (e.g., £)');
|
45
|
+
export const regexSchema = Joi.string().optional().allow('').description('Regular expression pattern for validation');
|
46
|
+
export const rowsSchema = Joi.number().empty('').integer().min(1).description('Number of rows for multiline text fields');
|
47
|
+
export const suffixSchema = Joi.string().trim().optional().allow('').description('Text to display after the input (e.g., kg)');
|
48
|
+
export const classesSchema = Joi.string().trim().optional().allow('').description('Custom CSS classes to apply to the component');
|
49
49
|
export const questionDetailsFullSchema = {
|
50
50
|
classesSchema,
|
51
51
|
documentTypesSchema,
|
@@ -87,7 +87,7 @@ export const formEditorInputPageKeys = {
|
|
87
87
|
* Joi schema for `FormEditorInputPage` interface
|
88
88
|
* @see {@link FormEditorInputPage}
|
89
89
|
*/
|
90
|
-
export const formEditorInputPageSchema = Joi.object().keys(formEditorInputPageKeys).required();
|
90
|
+
export const formEditorInputPageSchema = Joi.object().keys(formEditorInputPageKeys).required().description('Input schema for creating a new page in the form editor');
|
91
91
|
export const formEditorInputheckAnswersSettingsKeys = {
|
92
92
|
declarationText: shortDescriptionSchema
|
93
93
|
};
|
@@ -96,7 +96,7 @@ export const formEditorInputheckAnswersSettingsKeys = {
|
|
96
96
|
* Joi schema for `FormEditorInputCheckAnswersSettings` interface
|
97
97
|
* @see {@link FormEditorInputCheckAnswersSettings}
|
98
98
|
*/
|
99
|
-
export const formEditorInputCheckAnswersSettingSchema = Joi.object().keys(formEditorInputheckAnswersSettingsKeys).required();
|
99
|
+
export const formEditorInputCheckAnswersSettingSchema = Joi.object().keys(formEditorInputheckAnswersSettingsKeys).required().description('Configuration for the check-answers page');
|
100
100
|
export const formEditorInputQuestionKeys = {
|
101
101
|
question: questionSchema,
|
102
102
|
shortDescription: shortDescriptionSchema,
|
@@ -108,7 +108,7 @@ export const formEditorInputQuestionKeys = {
|
|
108
108
|
* Joi schema for `FormEditorInputQuestion` interface
|
109
109
|
* @see {@link FormEditorInputQuestion}
|
110
110
|
*/
|
111
|
-
export const formEditorInputQuestionSchema = Joi.object().keys(formEditorInputQuestionKeys).required();
|
111
|
+
export const formEditorInputQuestionSchema = Joi.object().keys(formEditorInputQuestionKeys).required().description('Input schema for creating or updating a question in the form editor');
|
112
112
|
export const formEditorInputPageSettingsKeys = {
|
113
113
|
pageHeadingAndGuidance: pageHeadingAndGuidanceSchema,
|
114
114
|
pageHeading: pageHeadingSchema,
|
@@ -119,5 +119,5 @@ export const formEditorInputPageSettingsKeys = {
|
|
119
119
|
* Joi schema for `FormEditorInputPageSettings` interface
|
120
120
|
* @see {@link FormEditorInputPageSettings}
|
121
121
|
*/
|
122
|
-
export const formEditorInputPageSettingsSchema = Joi.object().keys(formEditorInputPageSettingsKeys).required();
|
122
|
+
export const formEditorInputPageSettingsSchema = Joi.object().keys(formEditorInputPageSettingsKeys).required().description('Settings for page content and display in the form editor');
|
123
123
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","names":["Joi","ComponentType","QuestionTypeSubGroup","pageTypeSchema","string","required","valid","questionTypeSchema","WrittenAnswerSubGroup","DateSubGroup","UkAddressField","TelephoneNumberField","FileUploadField","EmailAddressField","ListSubGroup","YesNoField","CheckboxesField","RadiosField","AutocompleteField","questionTypeFullSchema","TextField","MultilineTextField","NumberField","DatePartsField","MonthYearField","writtenAnswerSubSchema","dateSubSchema","listSubSchema","nameSchema","trim","questionSchema","hintTextSchema","optional","allow","questionOptionalSchema","shortDescriptionSchema","pageHeadingAndGuidanceSchema","pageHeadingSchema","guidanceTextSchema","needDeclarationSchema","declarationTextSchema","exactFilesSchema","number","empty","integer","min","max","minFilesSchema","maxFilesSchema","minSchema","maxSchema","minLengthSchema","maxLengthSchema","maxFutureSchema","maxPastSchema","precisionSchema","prefixSchema","regexSchema","rowsSchema","suffixSchema","classesSchema","fileTypesSchema","array","items","single","default","documentTypesSchema","imageTypesSchema","tabularDataTypesSchema","enhancedActionSchema","radioIdSchema","radioLabelSchema","radioHintSchema","radioValueSchema","questionDetailsFullSchema","formEditorInputPageKeys","pageType","questionType","formEditorInputPageSchema","object","keys","formEditorInputheckAnswersSettingsKeys","declarationText","formEditorInputCheckAnswersSettingSchema","formEditorInputQuestionKeys","question","shortDescription","hintText","questionOptional","formEditorInputQuestionSchema","formEditorInputPageSettingsKeys","pageHeadingAndGuidance","pageHeading","guidanceText","formEditorInputPageSettingsSchema"],"sources":["../../../../src/form/form-editor/index.ts"],"sourcesContent":["import Joi from 'joi'\n\nimport { ComponentType } from '~/src/components/enums.js'\nimport {\n type FormEditorInputCheckAnswersSettings,\n type FormEditorInputPage,\n type FormEditorInputPageSettings,\n type FormEditorInputQuestion\n} from '~/src/form/form-editor/types.js'\n\nexport enum QuestionTypeSubGroup {\n WrittenAnswerSubGroup = 'writtenAnswerSub',\n DateSubGroup = 'dateSub',\n ListSubGroup = 'listSub'\n}\n\nexport const pageTypeSchema = Joi.string()\n .required()\n .valid('question', 'guidance')\nexport const questionTypeSchema = Joi.string()\n .required()\n .valid(\n QuestionTypeSubGroup.WrittenAnswerSubGroup,\n QuestionTypeSubGroup.DateSubGroup,\n ComponentType.UkAddressField,\n ComponentType.TelephoneNumberField,\n ComponentType.FileUploadField,\n ComponentType.EmailAddressField,\n QuestionTypeSubGroup.ListSubGroup,\n ComponentType.YesNoField,\n ComponentType.CheckboxesField,\n ComponentType.RadiosField,\n ComponentType.AutocompleteField\n )\n\nexport const questionTypeFullSchema = Joi.string()\n .required()\n .valid(\n ComponentType.TextField,\n ComponentType.MultilineTextField,\n ComponentType.NumberField,\n ComponentType.DatePartsField,\n ComponentType.MonthYearField,\n ComponentType.UkAddressField,\n ComponentType.TelephoneNumberField,\n ComponentType.FileUploadField,\n ComponentType.EmailAddressField,\n ComponentType.YesNoField,\n ComponentType.CheckboxesField,\n ComponentType.RadiosField,\n ComponentType.AutocompleteField\n )\n\nexport const writtenAnswerSubSchema = Joi.string()\n .required()\n .valid(\n ComponentType.TextField,\n ComponentType.MultilineTextField,\n ComponentType.NumberField\n )\nexport const dateSubSchema = Joi.string()\n .required()\n .valid(ComponentType.DatePartsField, ComponentType.MonthYearField)\nexport const listSubSchema = Joi.string()\n .required()\n .valid(\n ComponentType.YesNoField,\n ComponentType.CheckboxesField,\n ComponentType.RadiosField,\n ComponentType.AutocompleteField\n )\n\nexport const nameSchema = Joi.string().trim().required()\nexport const questionSchema = Joi.string().trim().required()\nexport const hintTextSchema = Joi.string().trim().optional().allow('')\nexport const questionOptionalSchema = Joi.string()\n .trim()\n .optional()\n .valid('', 'true')\nexport const shortDescriptionSchema = Joi.string().trim().required()\nexport const pageHeadingAndGuidanceSchema = Joi.string().trim().optional()\nexport const pageHeadingSchema = Joi.string().trim().required()\nexport const guidanceTextSchema = Joi.string().trim()\nexport const needDeclarationSchema = Joi.string().trim().required()\nexport const declarationTextSchema = Joi.string().trim().required()\nexport const exactFilesSchema = Joi.number().empty('').integer().min(1).max(25)\nexport const minFilesSchema = Joi.number().empty('').integer().min(0).max(25)\nexport const maxFilesSchema = Joi.number().empty('').integer().min(1).max(25)\nexport const minSchema = Joi.number().empty('').integer()\nexport const maxSchema = Joi.number().empty('').integer()\nexport const minLengthSchema = Joi.number().empty('').integer().min(1)\nexport const maxLengthSchema = Joi.number().empty('').integer().min(1)\nexport const maxFutureSchema = Joi.number().empty('').integer().min(0)\nexport const maxPastSchema = Joi.number().empty('').integer().min(0)\nexport const precisionSchema = Joi.number().empty('').integer().min(0).max(5)\nexport const prefixSchema = Joi.string().trim().optional().allow('')\nexport const regexSchema = Joi.string().optional().allow('')\nexport const rowsSchema = Joi.number().empty('').integer().min(1)\nexport const suffixSchema = Joi.string().trim().optional().allow('')\nexport const classesSchema = Joi.string().trim().optional().allow('')\nexport const fileTypesSchema = Joi.array()\n .items(Joi.string())\n .single()\n .empty(null)\n .default([])\nexport const documentTypesSchema = Joi.array()\n .items(Joi.string())\n .single()\n .empty(null)\n .default([])\nexport const imageTypesSchema = Joi.array()\n .items(Joi.string())\n .single()\n .empty(null)\n .default([])\nexport const tabularDataTypesSchema = Joi.array()\n .items(Joi.string())\n .single()\n .empty(null)\n .default([])\nexport const enhancedActionSchema = Joi.string().trim().optional().allow('')\nexport const radioIdSchema = Joi.string().trim().optional().allow('')\nexport const radioLabelSchema = Joi.string().trim().required()\nexport const radioHintSchema = Joi.string().trim().optional().allow('')\nexport const radioValueSchema = Joi.string().trim().optional().allow('')\n\nexport const questionDetailsFullSchema = {\n classesSchema,\n documentTypesSchema,\n enhancedActionSchema,\n exactFilesSchema,\n fileTypesSchema,\n hintTextSchema,\n imageTypesSchema,\n maxFilesSchema,\n maxFutureSchema,\n maxLengthSchema,\n maxPastSchema,\n maxSchema,\n minFilesSchema,\n minLengthSchema,\n minSchema,\n nameSchema,\n precisionSchema,\n prefixSchema,\n questionOptionalSchema,\n questionSchema,\n questionTypeFullSchema,\n radioHintSchema,\n radioIdSchema,\n radioLabelSchema,\n radioValueSchema,\n regexSchema,\n rowsSchema,\n shortDescriptionSchema,\n suffixSchema,\n tabularDataTypesSchema\n}\n\nexport const formEditorInputPageKeys = {\n pageType: pageTypeSchema,\n questionType: questionTypeSchema\n}\n\n/**\n * Joi schema for `FormEditorInputPage` interface\n * @see {@link FormEditorInputPage}\n */\nexport const formEditorInputPageSchema = Joi.object<FormEditorInputPage>()\n .keys(formEditorInputPageKeys)\n .required()\n\nexport const formEditorInputheckAnswersSettingsKeys = {\n declarationText: shortDescriptionSchema\n}\n\n/**\n * Joi schema for `FormEditorInputCheckAnswersSettings` interface\n * @see {@link FormEditorInputCheckAnswersSettings}\n */\nexport const formEditorInputCheckAnswersSettingSchema =\n Joi.object<FormEditorInputCheckAnswersSettings>()\n .keys(formEditorInputheckAnswersSettingsKeys)\n .required()\n\nexport const formEditorInputQuestionKeys = {\n question: questionSchema,\n shortDescription: shortDescriptionSchema,\n hintText: hintTextSchema,\n questionOptional: questionOptionalSchema\n}\n\n/**\n * Joi schema for `FormEditorInputQuestion` interface\n * @see {@link FormEditorInputQuestion}\n */\nexport const formEditorInputQuestionSchema =\n Joi.object<FormEditorInputQuestion>()\n .keys(formEditorInputQuestionKeys)\n .required()\n\nexport const formEditorInputPageSettingsKeys = {\n pageHeadingAndGuidance: pageHeadingAndGuidanceSchema,\n pageHeading: pageHeadingSchema,\n guidanceText: guidanceTextSchema\n}\n\n/**\n * Joi schema for `FormEditorInputPageSettings` interface\n * @see {@link FormEditorInputPageSettings}\n */\nexport const formEditorInputPageSettingsSchema =\n Joi.object<FormEditorInputPageSettings>()\n .keys(formEditorInputPageSettingsKeys)\n .required()\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"file":"index.js","names":["Joi","ComponentType","QuestionTypeSubGroup","pageTypeSchema","string","required","valid","description","questionTypeSchema","WrittenAnswerSubGroup","DateSubGroup","UkAddressField","TelephoneNumberField","FileUploadField","EmailAddressField","ListSubGroup","YesNoField","CheckboxesField","RadiosField","AutocompleteField","questionTypeFullSchema","TextField","MultilineTextField","NumberField","DatePartsField","MonthYearField","writtenAnswerSubSchema","dateSubSchema","listSubSchema","nameSchema","trim","questionSchema","hintTextSchema","optional","allow","questionOptionalSchema","exactFilesSchema","number","empty","integer","min","max","minFilesSchema","maxFilesSchema","fileTypesSchema","array","items","single","default","documentTypesSchema","imageTypesSchema","tabularDataTypesSchema","enhancedActionSchema","radioIdSchema","radioLabelSchema","radioHintSchema","radioValueSchema","shortDescriptionSchema","pageHeadingAndGuidanceSchema","pageHeadingSchema","guidanceTextSchema","needDeclarationSchema","declarationTextSchema","minSchema","maxSchema","minLengthSchema","maxLengthSchema","maxFutureSchema","maxPastSchema","precisionSchema","prefixSchema","regexSchema","rowsSchema","suffixSchema","classesSchema","questionDetailsFullSchema","formEditorInputPageKeys","pageType","questionType","formEditorInputPageSchema","object","keys","formEditorInputheckAnswersSettingsKeys","declarationText","formEditorInputCheckAnswersSettingSchema","formEditorInputQuestionKeys","question","shortDescription","hintText","questionOptional","formEditorInputQuestionSchema","formEditorInputPageSettingsKeys","pageHeadingAndGuidance","pageHeading","guidanceText","formEditorInputPageSettingsSchema"],"sources":["../../../../src/form/form-editor/index.ts"],"sourcesContent":["import Joi from 'joi'\n\nimport { ComponentType } from '~/src/components/enums.js'\nimport {\n type FormEditorInputCheckAnswersSettings,\n type FormEditorInputPage,\n type FormEditorInputPageSettings,\n type FormEditorInputQuestion\n} from '~/src/form/form-editor/types.js'\n\nexport enum QuestionTypeSubGroup {\n WrittenAnswerSubGroup = 'writtenAnswerSub',\n DateSubGroup = 'dateSub',\n ListSubGroup = 'listSub'\n}\n\nexport const pageTypeSchema = Joi.string()\n .required()\n .valid('question', 'guidance')\n .description('Type of page - either a question page or guidance page')\n\nexport const questionTypeSchema = Joi.string()\n .required()\n .valid(\n QuestionTypeSubGroup.WrittenAnswerSubGroup,\n QuestionTypeSubGroup.DateSubGroup,\n ComponentType.UkAddressField,\n ComponentType.TelephoneNumberField,\n ComponentType.FileUploadField,\n ComponentType.EmailAddressField,\n QuestionTypeSubGroup.ListSubGroup,\n ComponentType.YesNoField,\n ComponentType.CheckboxesField,\n ComponentType.RadiosField,\n ComponentType.AutocompleteField\n )\n .description('The high-level type of question, including grouped types')\n\nexport const questionTypeFullSchema = Joi.string()\n .required()\n .valid(\n ComponentType.TextField,\n ComponentType.MultilineTextField,\n ComponentType.NumberField,\n ComponentType.DatePartsField,\n ComponentType.MonthYearField,\n ComponentType.UkAddressField,\n ComponentType.TelephoneNumberField,\n ComponentType.FileUploadField,\n ComponentType.EmailAddressField,\n ComponentType.YesNoField,\n ComponentType.CheckboxesField,\n ComponentType.RadiosField,\n ComponentType.AutocompleteField\n )\n .description('The specific component type to use for this question')\n\nexport const writtenAnswerSubSchema = Joi.string()\n .required()\n .valid(\n ComponentType.TextField,\n ComponentType.MultilineTextField,\n ComponentType.NumberField\n )\n .description('Subtype for written answer questions')\n\nexport const dateSubSchema = Joi.string()\n .required()\n .valid(ComponentType.DatePartsField, ComponentType.MonthYearField)\nexport const listSubSchema = Joi.string()\n .required()\n .valid(\n ComponentType.YesNoField,\n ComponentType.CheckboxesField,\n ComponentType.RadiosField,\n ComponentType.AutocompleteField\n )\n .description('Subtype for date-related questions')\n\nexport const nameSchema = Joi.string()\n .trim()\n .required()\n .description('Unique identifier for the field')\n\nexport const questionSchema = Joi.string()\n .trim()\n .required()\n .description('The question text displayed to the user')\n\nexport const hintTextSchema = Joi.string()\n .trim()\n .optional()\n .allow('')\n .description('Optional guidance text displayed below the question')\n\nexport const questionOptionalSchema = Joi.string()\n .trim()\n .optional()\n .valid('', 'true')\n .description(\n 'Indicates whether a question is optional. Empty string or \"true\" values are accepted.'\n )\n\nexport const exactFilesSchema = Joi.number()\n .empty('')\n .integer()\n .min(1)\n .max(25)\n .description(\n 'Specifies the exact number of files required for upload. Must be between 1 and 25.'\n )\n\nexport const minFilesSchema = Joi.number()\n .empty('')\n .integer()\n .min(0)\n .max(25)\n .description(\n 'Minimum number of files required for upload. Must be between 0 and 25.'\n )\n\nexport const maxFilesSchema = Joi.number()\n .empty('')\n .integer()\n .min(1)\n .max(25)\n .description(\n 'Maximum number of files allowed for upload. Must be between 1 and 25.'\n )\n\nexport const fileTypesSchema = Joi.array()\n .items(Joi.string())\n .single()\n .empty(null)\n .default([])\n .description(\n 'Array of allowed file types. Can be provided as a single value or an array.'\n )\n\nexport const documentTypesSchema = Joi.array()\n .items(Joi.string())\n .single()\n .empty(null)\n .default([])\n .description(\n 'Array of allowed document types. Can be provided as a single value or an array.'\n )\n\nexport const imageTypesSchema = Joi.array()\n .items(Joi.string())\n .single()\n .empty(null)\n .default([])\n .description(\n 'Array of allowed image types. Can be provided as a single value or an array.'\n )\n\nexport const tabularDataTypesSchema = Joi.array()\n .items(Joi.string())\n .single()\n .empty(null)\n .default([])\nexport const enhancedActionSchema = Joi.string()\n .trim()\n .optional()\n .allow('')\n .description('Action field that can include enhanced functionality')\n\nexport const radioIdSchema = Joi.string()\n .trim()\n .optional()\n .allow('')\n .description('Unique identifier for radio options')\n\nexport const radioLabelSchema = Joi.string()\n .trim()\n .required()\n .description('The visible text shown next to radio options')\n\nexport const radioHintSchema = Joi.string()\n .trim()\n .optional()\n .allow('')\n .description(\n 'Optional hint text displayed with radio buttons to provide additional guidance'\n )\n\nexport const radioValueSchema = Joi.string()\n .trim()\n .optional()\n .allow('')\n .description(\n 'Array of allowed tabular data types. Can be provided as a single value or an array.'\n )\n\nexport const shortDescriptionSchema = Joi.string()\n .trim()\n .required()\n .description('Brief description of the question for internal use')\n\nexport const pageHeadingAndGuidanceSchema = Joi.string()\n .trim()\n .optional()\n .description('Combined heading and guidance for the page')\n\nexport const pageHeadingSchema = Joi.string()\n .trim()\n .required()\n .description('Main heading displayed at the top of the page')\n\nexport const guidanceTextSchema = Joi.string()\n .trim()\n .description('Guidance text to assist users in completing the page')\n\nexport const needDeclarationSchema = Joi.string()\n .trim()\n .required()\n .description('Whether a declaration is needed')\n\nexport const declarationTextSchema = Joi.string()\n .trim()\n .required()\n .description('Text of the declaration that users must agree to')\n\nexport const minSchema = Joi.number()\n .empty('')\n .integer()\n .description('Minimum value for numeric inputs')\n\nexport const maxSchema = Joi.number()\n .empty('')\n .integer()\n .description('Maximum value for numeric inputs')\n\nexport const minLengthSchema = Joi.number()\n .empty('')\n .integer()\n .min(1)\n .description('Minimum character length for text inputs')\n\nexport const maxLengthSchema = Joi.number()\n .empty('')\n .integer()\n .min(1)\n .description('Maximum character length for text inputs')\n\nexport const maxFutureSchema = Joi.number()\n .empty('')\n .integer()\n .min(1)\n .description('Maximum days in the future allowed for date inputs')\n\nexport const maxPastSchema = Joi.number()\n .empty('')\n .integer()\n .min(1)\n .description('Maximum days in the past allowed for date inputs')\n\nexport const precisionSchema = Joi.number()\n .empty('')\n .integer()\n .min(1)\n .description('Decimal precision for numeric inputs')\n\nexport const prefixSchema = Joi.string()\n .trim()\n .optional()\n .allow('')\n .description('Text to display before the input (e.g., £)')\n\nexport const regexSchema = Joi.string()\n .optional()\n .allow('')\n .description('Regular expression pattern for validation')\n\nexport const rowsSchema = Joi.number()\n .empty('')\n .integer()\n .min(1)\n .description('Number of rows for multiline text fields')\n\nexport const suffixSchema = Joi.string()\n .trim()\n .optional()\n .allow('')\n .description('Text to display after the input (e.g., kg)')\n\nexport const classesSchema = Joi.string()\n .trim()\n .optional()\n .allow('')\n .description('Custom CSS classes to apply to the component')\n\nexport const questionDetailsFullSchema = {\n classesSchema,\n documentTypesSchema,\n enhancedActionSchema,\n exactFilesSchema,\n fileTypesSchema,\n hintTextSchema,\n imageTypesSchema,\n maxFilesSchema,\n maxFutureSchema,\n maxLengthSchema,\n maxPastSchema,\n maxSchema,\n minFilesSchema,\n minLengthSchema,\n minSchema,\n nameSchema,\n precisionSchema,\n prefixSchema,\n questionOptionalSchema,\n questionSchema,\n questionTypeFullSchema,\n radioHintSchema,\n radioIdSchema,\n radioLabelSchema,\n radioValueSchema,\n regexSchema,\n rowsSchema,\n shortDescriptionSchema,\n suffixSchema,\n tabularDataTypesSchema\n}\n\nexport const formEditorInputPageKeys = {\n pageType: pageTypeSchema,\n questionType: questionTypeSchema\n}\n\n/**\n * Joi schema for `FormEditorInputPage` interface\n * @see {@link FormEditorInputPage}\n */\nexport const formEditorInputPageSchema = Joi.object<FormEditorInputPage>()\n .keys(formEditorInputPageKeys)\n .required()\n .description('Input schema for creating a new page in the form editor')\n\nexport const formEditorInputheckAnswersSettingsKeys = {\n declarationText: shortDescriptionSchema\n}\n\n/**\n * Joi schema for `FormEditorInputCheckAnswersSettings` interface\n * @see {@link FormEditorInputCheckAnswersSettings}\n */\nexport const formEditorInputCheckAnswersSettingSchema =\n Joi.object<FormEditorInputCheckAnswersSettings>()\n .keys(formEditorInputheckAnswersSettingsKeys)\n .required()\n .description('Configuration for the check-answers page')\n\nexport const formEditorInputQuestionKeys = {\n question: questionSchema,\n shortDescription: shortDescriptionSchema,\n hintText: hintTextSchema,\n questionOptional: questionOptionalSchema\n}\n\n/**\n * Joi schema for `FormEditorInputQuestion` interface\n * @see {@link FormEditorInputQuestion}\n */\nexport const formEditorInputQuestionSchema =\n Joi.object<FormEditorInputQuestion>()\n .keys(formEditorInputQuestionKeys)\n .required()\n .description(\n 'Input schema for creating or updating a question in the form editor'\n )\n\nexport const formEditorInputPageSettingsKeys = {\n pageHeadingAndGuidance: pageHeadingAndGuidanceSchema,\n pageHeading: pageHeadingSchema,\n guidanceText: guidanceTextSchema\n}\n\n/**\n * Joi schema for `FormEditorInputPageSettings` interface\n * @see {@link FormEditorInputPageSettings}\n */\nexport const formEditorInputPageSettingsSchema =\n Joi.object<FormEditorInputPageSettings>()\n .keys(formEditorInputPageSettingsKeys)\n .required()\n .description('Settings for page content and display in the form editor')\n"],"mappings":"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","ignoreList":[]}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import Joi from 'joi';
|
2
2
|
import { pageSchema } from "../../index.js";
|
3
3
|
export const patchPageSchema = Joi.object().keys({
|
4
|
-
title: pageSchema.extract('title').optional(),
|
5
|
-
path: pageSchema.extract('path').optional()
|
6
|
-
}).required().min(1);
|
4
|
+
title: pageSchema.extract('title').optional().description('New title to set for the page'),
|
5
|
+
path: pageSchema.extract('path').optional().description('New URL path to set for the page')
|
6
|
+
}).required().min(1).description('Schema for partially updating a page, requiring at least one field to be provided');
|
7
7
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","names":["Joi","pageSchema","patchPageSchema","object","keys","title","extract","optional","path","required","min"],"sources":["../../../../src/form/form-manager/index.ts"],"sourcesContent":["import Joi from 'joi'\n\nimport { type PatchPageFields } from '~/src/form/form-manager/types.js'\nimport { pageSchema } from '~/src/index.js'\n\nexport const patchPageSchema = Joi.object<PatchPageFields>()\n .keys({\n title: pageSchema.extract('title').optional(),\n path: pageSchema.extract('path').optional()\n })\n .required()\n .min(1)\n"],"mappings":"AAAA,OAAOA,GAAG,MAAM,KAAK;AAGrB,SAASC,UAAU;AAEnB,OAAO,MAAMC,eAAe,GAAGF,GAAG,CAACG,MAAM,CAAkB,CAAC,CACzDC,IAAI,CAAC;EACJC,KAAK,EAAEJ,UAAU,
|
1
|
+
{"version":3,"file":"index.js","names":["Joi","pageSchema","patchPageSchema","object","keys","title","extract","optional","description","path","required","min"],"sources":["../../../../src/form/form-manager/index.ts"],"sourcesContent":["import Joi from 'joi'\n\nimport { type PatchPageFields } from '~/src/form/form-manager/types.js'\nimport { pageSchema } from '~/src/index.js'\n\nexport const patchPageSchema = Joi.object<PatchPageFields>()\n .keys({\n title: pageSchema\n .extract('title')\n .optional()\n .description('New title to set for the page'),\n path: pageSchema\n .extract('path')\n .optional()\n .description('New URL path to set for the page')\n })\n .required()\n .min(1)\n .description(\n 'Schema for partially updating a page, requiring at least one field to be provided'\n )\n"],"mappings":"AAAA,OAAOA,GAAG,MAAM,KAAK;AAGrB,SAASC,UAAU;AAEnB,OAAO,MAAMC,eAAe,GAAGF,GAAG,CAACG,MAAM,CAAkB,CAAC,CACzDC,IAAI,CAAC;EACJC,KAAK,EAAEJ,UAAU,CACdK,OAAO,CAAC,OAAO,CAAC,CAChBC,QAAQ,CAAC,CAAC,CACVC,WAAW,CAAC,+BAA+B,CAAC;EAC/CC,IAAI,EAAER,UAAU,CACbK,OAAO,CAAC,MAAM,CAAC,CACfC,QAAQ,CAAC,CAAC,CACVC,WAAW,CAAC,kCAAkC;AACnD,CAAC,CAAC,CACDE,QAAQ,CAAC,CAAC,CACVC,GAAG,CAAC,CAAC,CAAC,CACNH,WAAW,CACV,mFACF,CAAC","ignoreList":[]}
|
@@ -1,49 +1,49 @@
|
|
1
1
|
import Joi from 'joi';
|
2
2
|
export const organisations = ['Animal and Plant Health Agency – APHA', 'Centre for Environment, Fisheries and Aquaculture Science – Cefas', 'Defra', 'Environment Agency', 'Forestry Commission', 'Marine Management Organisation – MMO', 'Natural England', 'Rural Payments Agency – RPA', 'Veterinary Medicines Directorate – VMD'];
|
3
|
-
export const idSchema = Joi.string().hex().length(24).required();
|
4
|
-
export const titleSchema = Joi.string().max(250).trim().required();
|
3
|
+
export const idSchema = Joi.string().hex().length(24).required().description('Unique identifier for the form, 24-character hexadecimal string');
|
4
|
+
export const titleSchema = Joi.string().max(250).trim().required().description('Title of the form, displayed to users');
|
5
5
|
export const slugSchema = Joi.string().pattern(/^[a-z0-9-]+$/, {
|
6
6
|
name: 'letters, numbers and hyphens only'
|
7
|
-
}).required();
|
8
|
-
export const organisationSchema = Joi.string().valid(...organisations).required();
|
9
|
-
export const teamNameSchema = Joi.string().max(100).trim().required();
|
7
|
+
}).required().description('URL-friendly identifier used in form paths');
|
8
|
+
export const organisationSchema = Joi.string().valid(...organisations).required().description('Defra organisation responsible for the form');
|
9
|
+
export const teamNameSchema = Joi.string().max(100).trim().required().description('Name of the team responsible for the form');
|
10
10
|
export const teamEmailSchema = Joi.string().email({
|
11
11
|
tlds: {
|
12
12
|
allow: ['uk']
|
13
13
|
}
|
14
|
-
}).trim().required();
|
15
|
-
export const phoneSchema = Joi.string().trim();
|
16
|
-
export const emailAddressSchema = Joi.string().email().trim().required();
|
17
|
-
export const emailResponseTimeSchema = Joi.string().trim().required();
|
14
|
+
}).trim().required().description('Contact email for the team responsible for the form');
|
15
|
+
export const phoneSchema = Joi.string().trim().description('Phone number for form-related inquiries');
|
16
|
+
export const emailAddressSchema = Joi.string().email().trim().required().description('Email address for form-related inquiries');
|
17
|
+
export const emailResponseTimeSchema = Joi.string().trim().required().description('Expected response time for email inquiries');
|
18
18
|
export const emailSchema = Joi.object().keys({
|
19
19
|
address: emailAddressSchema,
|
20
20
|
responseTime: emailResponseTimeSchema
|
21
|
-
});
|
21
|
+
}).description('Email contact details including response expectations');
|
22
22
|
export const onlineUrlSchema = Joi.string().uri({
|
23
23
|
scheme: ['http', 'https']
|
24
|
-
}).trim().required();
|
25
|
-
export const onlineTextSchema = Joi.string().trim().required();
|
24
|
+
}).trim().required().description('URL for online contact method');
|
25
|
+
export const onlineTextSchema = Joi.string().trim().required().description('Descriptive text for the online contact link');
|
26
26
|
export const onlineSchema = Joi.object().keys({
|
27
27
|
url: onlineUrlSchema,
|
28
28
|
text: onlineTextSchema
|
29
|
-
});
|
29
|
+
}).description('Online contact details with URL and descriptive text');
|
30
30
|
export const contactSchema = Joi.object().keys({
|
31
31
|
phone: phoneSchema,
|
32
32
|
email: emailSchema,
|
33
33
|
online: onlineSchema
|
34
|
-
});
|
35
|
-
export const submissionGuidanceSchema = Joi.string().trim();
|
34
|
+
}).description('Complete contact information for form-related inquiries');
|
35
|
+
export const submissionGuidanceSchema = Joi.string().trim().description('Guidance text shown to users when submitting the form');
|
36
36
|
export const privacyNoticeUrlSchema = Joi.string().uri({
|
37
37
|
scheme: ['http', 'https']
|
38
|
-
}).trim();
|
38
|
+
}).trim().description('URL to the privacy notice for this form');
|
39
39
|
export const notificationEmailAddressSchema = Joi.string().email({
|
40
40
|
tlds: {
|
41
41
|
allow: ['uk']
|
42
42
|
}
|
43
|
-
}).trim().pattern(/\.gov\.uk$|\.org\.uk$/);
|
44
|
-
export const authoredAtSchema = Joi.date().iso().required();
|
45
|
-
export const authorIdSchema = Joi.string().trim().required();
|
46
|
-
export const authorDisplayNameSchema = Joi.string().trim().required();
|
43
|
+
}).trim().pattern(/\.gov\.uk$|\.org\.uk$/).description('Email address to receive form submission notifications, must be a .gov.uk or .org.uk address');
|
44
|
+
export const authoredAtSchema = Joi.date().iso().required().description('ISO format timestamp of when an action occurred');
|
45
|
+
export const authorIdSchema = Joi.string().trim().required().description('Unique identifier for the author');
|
46
|
+
export const authorDisplayNameSchema = Joi.string().trim().required().description('Human-readable name of the author');
|
47
47
|
export const formMetadataInputKeys = {
|
48
48
|
title: titleSchema,
|
49
49
|
organisation: organisationSchema,
|
@@ -59,7 +59,7 @@ export const formMetadataInputKeys = {
|
|
59
59
|
* Joi schema for `FormMetadataInput` interface
|
60
60
|
* @see {@link FormMetadataInput}
|
61
61
|
*/
|
62
|
-
export const formMetadataInputSchema = Joi.object().keys(formMetadataInputKeys).required();
|
62
|
+
export const formMetadataInputSchema = Joi.object().keys(formMetadataInputKeys).required().description('Input data for creating or updating form metadata');
|
63
63
|
|
64
64
|
/**
|
65
65
|
* Joi schema for `FormMetadataAuthor` interface
|
@@ -68,18 +68,18 @@ export const formMetadataInputSchema = Joi.object().keys(formMetadataInputKeys).
|
|
68
68
|
export const formMetadataAuthorSchema = Joi.object().keys({
|
69
69
|
id: authorIdSchema,
|
70
70
|
displayName: authorDisplayNameSchema
|
71
|
-
}).required();
|
71
|
+
}).required().description('Information about the author of a form or form change');
|
72
72
|
|
73
73
|
/**
|
74
74
|
* Joi schema for `FormMetadataState` interface
|
75
75
|
* @see {@link FormMetadataState}
|
76
76
|
*/
|
77
77
|
export const formMetadataStateSchema = Joi.object().keys({
|
78
|
-
createdAt: authoredAtSchema,
|
79
|
-
createdBy: formMetadataAuthorSchema,
|
80
|
-
updatedAt: authoredAtSchema,
|
81
|
-
updatedBy: formMetadataAuthorSchema
|
82
|
-
});
|
78
|
+
createdAt: authoredAtSchema.description('When this version was first created'),
|
79
|
+
createdBy: formMetadataAuthorSchema.description('Who created this version'),
|
80
|
+
updatedAt: authoredAtSchema.description('When this version was last updated'),
|
81
|
+
updatedBy: formMetadataAuthorSchema.description('Who last updated this version')
|
82
|
+
}).description('Metadata about a specific version state (draft or live)');
|
83
83
|
|
84
84
|
/**
|
85
85
|
* Joi schema for `FormMetadata` interface
|
@@ -88,11 +88,11 @@ export const formMetadataStateSchema = Joi.object().keys({
|
|
88
88
|
export const formMetadataSchema = formMetadataInputSchema.append({
|
89
89
|
id: idSchema,
|
90
90
|
slug: slugSchema,
|
91
|
-
draft: formMetadataStateSchema,
|
92
|
-
live: formMetadataStateSchema,
|
93
|
-
createdAt: authoredAtSchema,
|
94
|
-
createdBy: formMetadataAuthorSchema,
|
95
|
-
updatedAt: authoredAtSchema,
|
96
|
-
updatedBy: formMetadataAuthorSchema
|
97
|
-
});
|
91
|
+
draft: formMetadataStateSchema.description('Metadata for the draft version'),
|
92
|
+
live: formMetadataStateSchema.description('Metadata for the published version'),
|
93
|
+
createdAt: authoredAtSchema.description('When the form was first created'),
|
94
|
+
createdBy: formMetadataAuthorSchema.description('Who created the form'),
|
95
|
+
updatedAt: authoredAtSchema.description('When the form was last updated'),
|
96
|
+
updatedBy: formMetadataAuthorSchema.description('Who last updated the form')
|
97
|
+
}).description('Complete metadata for a form, including version information and authoring details');
|
98
98
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","names":["Joi","organisations","idSchema","string","hex","length","required","titleSchema","max","trim","slugSchema","pattern","name","organisationSchema","valid","teamNameSchema","teamEmailSchema","email","tlds","allow","phoneSchema","emailAddressSchema","emailResponseTimeSchema","emailSchema","object","keys","address","responseTime","onlineUrlSchema","uri","scheme","onlineTextSchema","onlineSchema","url","text","contactSchema","phone","online","submissionGuidanceSchema","privacyNoticeUrlSchema","notificationEmailAddressSchema","authoredAtSchema","date","iso","authorIdSchema","authorDisplayNameSchema","formMetadataInputKeys","title","organisation","teamName","teamEmail","contact","submissionGuidance","privacyNoticeUrl","notificationEmail","formMetadataInputSchema","formMetadataAuthorSchema","id","displayName","formMetadataStateSchema","createdAt","createdBy","updatedAt","updatedBy","formMetadataSchema","append","slug","draft","live"],"sources":["../../../../src/form/form-metadata/index.ts"],"sourcesContent":["import Joi from 'joi'\n\nimport {\n type FormMetadata,\n type FormMetadataAuthor,\n type FormMetadataContact,\n type FormMetadataContactEmail,\n type FormMetadataContactOnline,\n type FormMetadataInput,\n type FormMetadataState\n} from '~/src/form/form-metadata/types.js'\n\nexport const organisations = [\n 'Animal and Plant Health Agency – APHA',\n 'Centre for Environment, Fisheries and Aquaculture Science – Cefas',\n 'Defra',\n 'Environment Agency',\n 'Forestry Commission',\n 'Marine Management Organisation – MMO',\n 'Natural England',\n 'Rural Payments Agency – RPA',\n 'Veterinary Medicines Directorate – VMD'\n]\n\nexport const idSchema = Joi.string().hex().length(24).required()\nexport const titleSchema = Joi.string().max(250).trim().required()\nexport const slugSchema = Joi.string()\n .pattern(/^[a-z0-9-]+$/, { name: 'letters, numbers and hyphens only' })\n .required()\n\nexport const organisationSchema = Joi.string()\n .valid(...organisations)\n .required()\n\nexport const teamNameSchema = Joi.string().max(100).trim().required()\nexport const teamEmailSchema = Joi.string()\n .email({ tlds: { allow: ['uk'] } })\n .trim()\n .required()\n\nexport const phoneSchema = Joi.string().trim()\n\nexport const emailAddressSchema = Joi.string().email().trim().required()\nexport const emailResponseTimeSchema = Joi.string().trim().required()\nexport const emailSchema = Joi.object<FormMetadataContactEmail>().keys({\n address: emailAddressSchema,\n responseTime: emailResponseTimeSchema\n})\n\nexport const onlineUrlSchema = Joi.string()\n .uri({\n scheme: ['http', 'https']\n })\n .trim()\n .required()\nexport const onlineTextSchema = Joi.string().trim().required()\nexport const onlineSchema = Joi.object<FormMetadataContactOnline>().keys({\n url: onlineUrlSchema,\n text: onlineTextSchema\n})\n\nexport const contactSchema = Joi.object<FormMetadataContact>().keys({\n phone: phoneSchema,\n email: emailSchema,\n online: onlineSchema\n})\n\nexport const submissionGuidanceSchema = Joi.string().trim()\n\nexport const privacyNoticeUrlSchema = Joi.string()\n .uri({\n scheme: ['http', 'https']\n })\n .trim()\n\nexport const notificationEmailAddressSchema = Joi.string()\n .email({ tlds: { allow: ['uk'] } })\n .trim()\n .pattern(/\\.gov\\.uk$|\\.org\\.uk$/)\n\nexport const authoredAtSchema = Joi.date().iso().required()\nexport const authorIdSchema = Joi.string().trim().required()\nexport const authorDisplayNameSchema = Joi.string().trim().required()\n\nexport const formMetadataInputKeys = {\n title: titleSchema,\n organisation: organisationSchema,\n teamName: teamNameSchema,\n teamEmail: teamEmailSchema,\n contact: contactSchema,\n submissionGuidance: submissionGuidanceSchema,\n privacyNoticeUrl: privacyNoticeUrlSchema,\n notificationEmail: notificationEmailAddressSchema\n}\n\n/**\n * Joi schema for `FormMetadataInput` interface\n * @see {@link FormMetadataInput}\n */\nexport const formMetadataInputSchema = Joi.object<FormMetadataInput>()\n .keys(formMetadataInputKeys)\n .required()\n\n/**\n * Joi schema for `FormMetadataAuthor` interface\n * @see {@link FormMetadataAuthor}\n */\nexport const formMetadataAuthorSchema = Joi.object<FormMetadataAuthor>()\n .keys({\n id: authorIdSchema,\n displayName: authorDisplayNameSchema\n })\n .required()\n\n/**\n * Joi schema for `FormMetadataState` interface\n * @see {@link FormMetadataState}\n */\nexport const formMetadataStateSchema = Joi.object<FormMetadataState>().keys({\n createdAt: authoredAtSchema,\n createdBy: formMetadataAuthorSchema,\n updatedAt: authoredAtSchema,\n updatedBy: formMetadataAuthorSchema\n})\n\n/**\n * Joi schema for `FormMetadata` interface\n * @see {@link FormMetadata}\n */\nexport const formMetadataSchema = formMetadataInputSchema.append<FormMetadata>({\n id: idSchema,\n slug: slugSchema,\n draft: formMetadataStateSchema,\n live: formMetadataStateSchema,\n createdAt: authoredAtSchema,\n createdBy: formMetadataAuthorSchema,\n updatedAt: authoredAtSchema,\n updatedBy: formMetadataAuthorSchema\n})\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"file":"index.js","names":["Joi","organisations","idSchema","string","hex","length","required","description","titleSchema","max","trim","slugSchema","pattern","name","organisationSchema","valid","teamNameSchema","teamEmailSchema","email","tlds","allow","phoneSchema","emailAddressSchema","emailResponseTimeSchema","emailSchema","object","keys","address","responseTime","onlineUrlSchema","uri","scheme","onlineTextSchema","onlineSchema","url","text","contactSchema","phone","online","submissionGuidanceSchema","privacyNoticeUrlSchema","notificationEmailAddressSchema","authoredAtSchema","date","iso","authorIdSchema","authorDisplayNameSchema","formMetadataInputKeys","title","organisation","teamName","teamEmail","contact","submissionGuidance","privacyNoticeUrl","notificationEmail","formMetadataInputSchema","formMetadataAuthorSchema","id","displayName","formMetadataStateSchema","createdAt","createdBy","updatedAt","updatedBy","formMetadataSchema","append","slug","draft","live"],"sources":["../../../../src/form/form-metadata/index.ts"],"sourcesContent":["import Joi from 'joi'\n\nimport {\n type FormMetadata,\n type FormMetadataAuthor,\n type FormMetadataContact,\n type FormMetadataContactEmail,\n type FormMetadataContactOnline,\n type FormMetadataInput,\n type FormMetadataState\n} from '~/src/form/form-metadata/types.js'\n\nexport const organisations = [\n 'Animal and Plant Health Agency – APHA',\n 'Centre for Environment, Fisheries and Aquaculture Science – Cefas',\n 'Defra',\n 'Environment Agency',\n 'Forestry Commission',\n 'Marine Management Organisation – MMO',\n 'Natural England',\n 'Rural Payments Agency – RPA',\n 'Veterinary Medicines Directorate – VMD'\n]\n\nexport const idSchema = Joi.string()\n .hex()\n .length(24)\n .required()\n .description(\n 'Unique identifier for the form, 24-character hexadecimal string'\n )\n\nexport const titleSchema = Joi.string()\n .max(250)\n .trim()\n .required()\n .description('Title of the form, displayed to users')\n\nexport const slugSchema = Joi.string()\n .pattern(/^[a-z0-9-]+$/, { name: 'letters, numbers and hyphens only' })\n .required()\n .description('URL-friendly identifier used in form paths')\n\nexport const organisationSchema = Joi.string()\n .valid(...organisations)\n .required()\n .description('Defra organisation responsible for the form')\n\nexport const teamNameSchema = Joi.string()\n .max(100)\n .trim()\n .required()\n .description('Name of the team responsible for the form')\n\nexport const teamEmailSchema = Joi.string()\n .email({ tlds: { allow: ['uk'] } })\n .trim()\n .required()\n .description('Contact email for the team responsible for the form')\n\nexport const phoneSchema = Joi.string()\n .trim()\n .description('Phone number for form-related inquiries')\n\nexport const emailAddressSchema = Joi.string()\n .email()\n .trim()\n .required()\n .description('Email address for form-related inquiries')\n\nexport const emailResponseTimeSchema = Joi.string()\n .trim()\n .required()\n .description('Expected response time for email inquiries')\n\nexport const emailSchema = Joi.object<FormMetadataContactEmail>()\n .keys({\n address: emailAddressSchema,\n responseTime: emailResponseTimeSchema\n })\n .description('Email contact details including response expectations')\n\nexport const onlineUrlSchema = Joi.string()\n .uri({\n scheme: ['http', 'https']\n })\n .trim()\n .required()\n .description('URL for online contact method')\n\nexport const onlineTextSchema = Joi.string()\n .trim()\n .required()\n .description('Descriptive text for the online contact link')\n\nexport const onlineSchema = Joi.object<FormMetadataContactOnline>()\n .keys({\n url: onlineUrlSchema,\n text: onlineTextSchema\n })\n .description('Online contact details with URL and descriptive text')\n\nexport const contactSchema = Joi.object<FormMetadataContact>()\n .keys({\n phone: phoneSchema,\n email: emailSchema,\n online: onlineSchema\n })\n .description('Complete contact information for form-related inquiries')\n\nexport const submissionGuidanceSchema = Joi.string()\n .trim()\n .description('Guidance text shown to users when submitting the form')\n\nexport const privacyNoticeUrlSchema = Joi.string()\n .uri({\n scheme: ['http', 'https']\n })\n .trim()\n .description('URL to the privacy notice for this form')\n\nexport const notificationEmailAddressSchema = Joi.string()\n .email({ tlds: { allow: ['uk'] } })\n .trim()\n .pattern(/\\.gov\\.uk$|\\.org\\.uk$/)\n .description(\n 'Email address to receive form submission notifications, must be a .gov.uk or .org.uk address'\n )\n\nexport const authoredAtSchema = Joi.date()\n .iso()\n .required()\n .description('ISO format timestamp of when an action occurred')\n\nexport const authorIdSchema = Joi.string()\n .trim()\n .required()\n .description('Unique identifier for the author')\n\nexport const authorDisplayNameSchema = Joi.string()\n .trim()\n .required()\n .description('Human-readable name of the author')\n\nexport const formMetadataInputKeys = {\n title: titleSchema,\n organisation: organisationSchema,\n teamName: teamNameSchema,\n teamEmail: teamEmailSchema,\n contact: contactSchema,\n submissionGuidance: submissionGuidanceSchema,\n privacyNoticeUrl: privacyNoticeUrlSchema,\n notificationEmail: notificationEmailAddressSchema\n}\n\n/**\n * Joi schema for `FormMetadataInput` interface\n * @see {@link FormMetadataInput}\n */\nexport const formMetadataInputSchema = Joi.object<FormMetadataInput>()\n .keys(formMetadataInputKeys)\n .required()\n .description('Input data for creating or updating form metadata')\n\n/**\n * Joi schema for `FormMetadataAuthor` interface\n * @see {@link FormMetadataAuthor}\n */\nexport const formMetadataAuthorSchema = Joi.object<FormMetadataAuthor>()\n .keys({\n id: authorIdSchema,\n displayName: authorDisplayNameSchema\n })\n .required()\n .description('Information about the author of a form or form change')\n\n/**\n * Joi schema for `FormMetadataState` interface\n * @see {@link FormMetadataState}\n */\nexport const formMetadataStateSchema = Joi.object<FormMetadataState>()\n .keys({\n createdAt: authoredAtSchema.description(\n 'When this version was first created'\n ),\n createdBy: formMetadataAuthorSchema.description('Who created this version'),\n updatedAt: authoredAtSchema.description(\n 'When this version was last updated'\n ),\n updatedBy: formMetadataAuthorSchema.description(\n 'Who last updated this version'\n )\n })\n .description('Metadata about a specific version state (draft or live)')\n\n/**\n * Joi schema for `FormMetadata` interface\n * @see {@link FormMetadata}\n */\nexport const formMetadataSchema = formMetadataInputSchema\n .append<FormMetadata>({\n id: idSchema,\n slug: slugSchema,\n draft: formMetadataStateSchema.description(\n 'Metadata for the draft version'\n ),\n live: formMetadataStateSchema.description(\n 'Metadata for the published version'\n ),\n createdAt: authoredAtSchema.description('When the form was first created'),\n createdBy: formMetadataAuthorSchema.description('Who created the form'),\n updatedAt: authoredAtSchema.description('When the form was last updated'),\n updatedBy: formMetadataAuthorSchema.description('Who last updated the form')\n })\n .description(\n 'Complete metadata for a form, including version information and authoring details'\n )\n"],"mappings":"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","ignoreList":[]}
|
@@ -4,29 +4,29 @@ import Joi from 'joi';
|
|
4
4
|
* @see {@link SubmitRecord}
|
5
5
|
*/
|
6
6
|
export const formSubmitRecordSchema = Joi.object({
|
7
|
-
name: Joi.string().required(),
|
8
|
-
title: Joi.string().required(),
|
9
|
-
value: Joi.string().required().allow('')
|
10
|
-
});
|
7
|
+
name: Joi.string().required().description('Field identifier matching the component name'),
|
8
|
+
title: Joi.string().required().description('Human-readable label for the field'),
|
9
|
+
value: Joi.string().required().allow('').description('User-submitted value for the field, may be empty')
|
10
|
+
}).description('Individual field value in a form submission');
|
11
11
|
|
12
12
|
/**
|
13
13
|
* Joi schema for `SubmitRecordset` interface
|
14
14
|
* @see {@link SubmitRecordset}
|
15
15
|
*/
|
16
16
|
export const formSubmitRecordsetSchema = Joi.object({
|
17
|
-
name: Joi.string().required(),
|
18
|
-
title: Joi.string().required(),
|
19
|
-
value: Joi.array().items(Joi.array().items(formSubmitRecordSchema).required()).required()
|
20
|
-
});
|
17
|
+
name: Joi.string().required().description('Identifier for the repeatable section'),
|
18
|
+
title: Joi.string().required().description('Human-readable title for the repeatable section'),
|
19
|
+
value: Joi.array().items(Joi.array().items(formSubmitRecordSchema).required()).required().description('Array of record arrays, each representing a repeated instance')
|
20
|
+
}).description('Collection of repeated field values from a repeatable section');
|
21
21
|
|
22
22
|
/**
|
23
23
|
* Joi schema for `SubmitPayload` interface
|
24
24
|
* @see {@link SubmitPayload}
|
25
25
|
*/
|
26
26
|
export const formSubmitPayloadSchema = Joi.object().keys({
|
27
|
-
retrievalKey: Joi.string().required(),
|
28
|
-
sessionId: Joi.string().required(),
|
29
|
-
main: Joi.array().items(formSubmitRecordSchema).required(),
|
30
|
-
repeaters: Joi.array().items(formSubmitRecordsetSchema).required()
|
31
|
-
}).required();
|
27
|
+
retrievalKey: Joi.string().required().description('Unique key to retrieve this submission later'),
|
28
|
+
sessionId: Joi.string().required().description('User session identifier for tracking and security'),
|
29
|
+
main: Joi.array().items(formSubmitRecordSchema).required().description('Main (non-repeating) field values from the form'),
|
30
|
+
repeaters: Joi.array().items(formSubmitRecordsetSchema).required().description('Repeatable section values from the form')
|
31
|
+
}).required().description('Complete form submission payload structure with all form data');
|
32
32
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","names":["Joi","formSubmitRecordSchema","object","name","string","required","title","value","allow","formSubmitRecordsetSchema","array","items","formSubmitPayloadSchema","keys","retrievalKey","sessionId","main","repeaters"],"sources":["../../../../src/form/form-submission/index.ts"],"sourcesContent":["import Joi from 'joi'\n\nimport {\n type SubmitPayload,\n type SubmitRecord,\n type SubmitRecordset\n} from '~/src/form/form-submission/types.js'\n\n/**\n * Joi schema for `SubmitRecord` interface\n * @see {@link SubmitRecord}\n */\nexport const formSubmitRecordSchema = Joi.object<SubmitRecord>({\n name: Joi.string().required(),\n title: Joi.string().required(),\n value: Joi.string().required().allow('')\n})\n\n/**\n * Joi schema for `SubmitRecordset` interface\n * @see {@link SubmitRecordset}\n */\nexport const formSubmitRecordsetSchema = Joi.object<SubmitRecordset>({\n name: Joi.string().required(),\n title: Joi.string().required(),\n value: Joi.array<SubmitRecord[]>()\n .items(Joi.array<SubmitRecord>().items(formSubmitRecordSchema).required())\n .required()\n})\n\n/**\n * Joi schema for `SubmitPayload` interface\n * @see {@link SubmitPayload}\n */\nexport const formSubmitPayloadSchema = Joi.object<SubmitPayload>()\n .keys({\n retrievalKey: Joi.string().required(),\n sessionId: Joi.string().required(),\n main: Joi.array<SubmitRecord>().items(formSubmitRecordSchema).required(),\n repeaters: Joi.array<SubmitRecordset>()\n .items(formSubmitRecordsetSchema)\n .required()\n })\n .required()\n"],"mappings":"AAAA,OAAOA,GAAG,MAAM,KAAK;AAQrB;AACA;AACA;AACA;AACA,OAAO,MAAMC,sBAAsB,GAAGD,GAAG,CAACE,MAAM,CAAe;EAC7DC,IAAI,EAAEH,GAAG,CAACI,MAAM,CAAC,CAAC,
|
1
|
+
{"version":3,"file":"index.js","names":["Joi","formSubmitRecordSchema","object","name","string","required","description","title","value","allow","formSubmitRecordsetSchema","array","items","formSubmitPayloadSchema","keys","retrievalKey","sessionId","main","repeaters"],"sources":["../../../../src/form/form-submission/index.ts"],"sourcesContent":["import Joi from 'joi'\n\nimport {\n type SubmitPayload,\n type SubmitRecord,\n type SubmitRecordset\n} from '~/src/form/form-submission/types.js'\n\n/**\n * Joi schema for `SubmitRecord` interface\n * @see {@link SubmitRecord}\n */\nexport const formSubmitRecordSchema = Joi.object<SubmitRecord>({\n name: Joi.string()\n .required()\n .description('Field identifier matching the component name'),\n title: Joi.string()\n .required()\n .description('Human-readable label for the field'),\n value: Joi.string()\n .required()\n .allow('')\n .description('User-submitted value for the field, may be empty')\n}).description('Individual field value in a form submission')\n\n/**\n * Joi schema for `SubmitRecordset` interface\n * @see {@link SubmitRecordset}\n */\nexport const formSubmitRecordsetSchema = Joi.object<SubmitRecordset>({\n name: Joi.string()\n .required()\n .description('Identifier for the repeatable section'),\n title: Joi.string()\n .required()\n .description('Human-readable title for the repeatable section'),\n value: Joi.array<SubmitRecord[]>()\n .items(Joi.array<SubmitRecord>().items(formSubmitRecordSchema).required())\n .required()\n .description(\n 'Array of record arrays, each representing a repeated instance'\n )\n}).description('Collection of repeated field values from a repeatable section')\n\n/**\n * Joi schema for `SubmitPayload` interface\n * @see {@link SubmitPayload}\n */\nexport const formSubmitPayloadSchema = Joi.object<SubmitPayload>()\n .keys({\n retrievalKey: Joi.string()\n .required()\n .description('Unique key to retrieve this submission later'),\n sessionId: Joi.string()\n .required()\n .description('User session identifier for tracking and security'),\n main: Joi.array<SubmitRecord>()\n .items(formSubmitRecordSchema)\n .required()\n .description('Main (non-repeating) field values from the form'),\n repeaters: Joi.array<SubmitRecordset>()\n .items(formSubmitRecordsetSchema)\n .required()\n .description('Repeatable section values from the form')\n })\n .required()\n .description('Complete form submission payload structure with all form data')\n"],"mappings":"AAAA,OAAOA,GAAG,MAAM,KAAK;AAQrB;AACA;AACA;AACA;AACA,OAAO,MAAMC,sBAAsB,GAAGD,GAAG,CAACE,MAAM,CAAe;EAC7DC,IAAI,EAAEH,GAAG,CAACI,MAAM,CAAC,CAAC,CACfC,QAAQ,CAAC,CAAC,CACVC,WAAW,CAAC,8CAA8C,CAAC;EAC9DC,KAAK,EAAEP,GAAG,CAACI,MAAM,CAAC,CAAC,CAChBC,QAAQ,CAAC,CAAC,CACVC,WAAW,CAAC,oCAAoC,CAAC;EACpDE,KAAK,EAAER,GAAG,CAACI,MAAM,CAAC,CAAC,CAChBC,QAAQ,CAAC,CAAC,CACVI,KAAK,CAAC,EAAE,CAAC,CACTH,WAAW,CAAC,kDAAkD;AACnE,CAAC,CAAC,CAACA,WAAW,CAAC,6CAA6C,CAAC;;AAE7D;AACA;AACA;AACA;AACA,OAAO,MAAMI,yBAAyB,GAAGV,GAAG,CAACE,MAAM,CAAkB;EACnEC,IAAI,EAAEH,GAAG,CAACI,MAAM,CAAC,CAAC,CACfC,QAAQ,CAAC,CAAC,CACVC,WAAW,CAAC,uCAAuC,CAAC;EACvDC,KAAK,EAAEP,GAAG,CAACI,MAAM,CAAC,CAAC,CAChBC,QAAQ,CAAC,CAAC,CACVC,WAAW,CAAC,iDAAiD,CAAC;EACjEE,KAAK,EAAER,GAAG,CAACW,KAAK,CAAiB,CAAC,CAC/BC,KAAK,CAACZ,GAAG,CAACW,KAAK,CAAe,CAAC,CAACC,KAAK,CAACX,sBAAsB,CAAC,CAACI,QAAQ,CAAC,CAAC,CAAC,CACzEA,QAAQ,CAAC,CAAC,CACVC,WAAW,CACV,+DACF;AACJ,CAAC,CAAC,CAACA,WAAW,CAAC,+DAA+D,CAAC;;AAE/E;AACA;AACA;AACA;AACA,OAAO,MAAMO,uBAAuB,GAAGb,GAAG,CAACE,MAAM,CAAgB,CAAC,CAC/DY,IAAI,CAAC;EACJC,YAAY,EAAEf,GAAG,CAACI,MAAM,CAAC,CAAC,CACvBC,QAAQ,CAAC,CAAC,CACVC,WAAW,CAAC,8CAA8C,CAAC;EAC9DU,SAAS,EAAEhB,GAAG,CAACI,MAAM,CAAC,CAAC,CACpBC,QAAQ,CAAC,CAAC,CACVC,WAAW,CAAC,mDAAmD,CAAC;EACnEW,IAAI,EAAEjB,GAAG,CAACW,KAAK,CAAe,CAAC,CAC5BC,KAAK,CAACX,sBAAsB,CAAC,CAC7BI,QAAQ,CAAC,CAAC,CACVC,WAAW,CAAC,iDAAiD,CAAC;EACjEY,SAAS,EAAElB,GAAG,CAACW,KAAK,CAAkB,CAAC,CACpCC,KAAK,CAACF,yBAAyB,CAAC,CAChCL,QAAQ,CAAC,CAAC,CACVC,WAAW,CAAC,yCAAyC;AAC1D,CAAC,CAAC,CACDD,QAAQ,CAAC,CAAC,CACVC,WAAW,CAAC,+DAA+D,CAAC","ignoreList":[]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"joi-to-json.d.js","names":[],"sources":["../../../src/types/joi-to-json.d.ts"],"sourcesContent":["declare module 'joi-to-json' {\n import { type Schema } from 'joi'\n\n /**\n * Converts a Joi schema to a JSON Schema\n */\n function parse(\n joiSchema: Schema,\n type?: string,\n definitions?: object,\n parserOptions?: object\n ): object\n\n export = parse\n}\n"],"mappings":"","ignoreList":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/common/pagination/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AAEzE;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/common/pagination/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AAEzE;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;CAgBlC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,GAAG,CAAC,YAAY,CAAC,iBAAiB,CACpC,CAAA"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/common/search/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAGjE;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/common/search/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAGjE;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;CA2B9B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,GAAG,CAAC,YAAY,CAAC,aAAa,CAChC,CAAA"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/common/sorting/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAEnE;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/common/sorting/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAEnE;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;CAS/B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,GAAG,CAAC,YAAY,CAAC,cAAc,CACjC,CAAA"}
|
@@ -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,EAAE,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAU7D,OAAO,EAKL,KAAK,cAAc,EAGnB,KAAK,IAAI,EACT,KAAK,IAAI,EAMV,MAAM,qCAAqC,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,EAAE,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAU7D,OAAO,EAKL,KAAK,cAAc,EAGnB,KAAK,IAAI,EACT,KAAK,IAAI,EAMV,MAAM,qCAAqC,CAAA;AAuJ5C,eAAO,MAAM,eAAe,gCA4FZ,CAAA;AAEhB,eAAO,MAAM,iBAAiB,gCAOkD,CAAA;AA8FhF;;;GAGG;AACH,eAAO,MAAM,UAAU,wBAiDnB,CAAA;AAEJ;;GAEG;AACH,eAAO,MAAM,YAAY,wBAStB,CAAA;AAEH,eAAO,MAAM,mBAAmB,wBAc7B,CAAA;AA0CH,eAAO,MAAM,UAAU,wBA8BnB,CAAA;AAEJ;;GAEG;AACH,eAAO,MAAM,YAAY,wBAOkD,CAAA;AAiD3E;;;GAGG;AACH,eAAO,MAAM,oBAAoB,kCAsE7B,CAAA;AAEJ,eAAO,MAAM,6BAA6B,kCAiBvC,CAAA;AAIH,eAAO,MAAM,MAAM,kCAAuB,CAAA"}
|
@@ -15,15 +15,24 @@ export declare const nameSchema: Joi.StringSchema<string>;
|
|
15
15
|
export declare const questionSchema: Joi.StringSchema<string>;
|
16
16
|
export declare const hintTextSchema: Joi.StringSchema<string>;
|
17
17
|
export declare const questionOptionalSchema: Joi.StringSchema<string>;
|
18
|
+
export declare const exactFilesSchema: Joi.NumberSchema<number>;
|
19
|
+
export declare const minFilesSchema: Joi.NumberSchema<number>;
|
20
|
+
export declare const maxFilesSchema: Joi.NumberSchema<number>;
|
21
|
+
export declare const fileTypesSchema: Joi.ArraySchema<any[]>;
|
22
|
+
export declare const documentTypesSchema: Joi.ArraySchema<any[]>;
|
23
|
+
export declare const imageTypesSchema: Joi.ArraySchema<any[]>;
|
24
|
+
export declare const tabularDataTypesSchema: Joi.ArraySchema<any[]>;
|
25
|
+
export declare const enhancedActionSchema: Joi.StringSchema<string>;
|
26
|
+
export declare const radioIdSchema: Joi.StringSchema<string>;
|
27
|
+
export declare const radioLabelSchema: Joi.StringSchema<string>;
|
28
|
+
export declare const radioHintSchema: Joi.StringSchema<string>;
|
29
|
+
export declare const radioValueSchema: Joi.StringSchema<string>;
|
18
30
|
export declare const shortDescriptionSchema: Joi.StringSchema<string>;
|
19
31
|
export declare const pageHeadingAndGuidanceSchema: Joi.StringSchema<string>;
|
20
32
|
export declare const pageHeadingSchema: Joi.StringSchema<string>;
|
21
33
|
export declare const guidanceTextSchema: Joi.StringSchema<string>;
|
22
34
|
export declare const needDeclarationSchema: Joi.StringSchema<string>;
|
23
35
|
export declare const declarationTextSchema: Joi.StringSchema<string>;
|
24
|
-
export declare const exactFilesSchema: Joi.NumberSchema<number>;
|
25
|
-
export declare const minFilesSchema: Joi.NumberSchema<number>;
|
26
|
-
export declare const maxFilesSchema: Joi.NumberSchema<number>;
|
27
36
|
export declare const minSchema: Joi.NumberSchema<number>;
|
28
37
|
export declare const maxSchema: Joi.NumberSchema<number>;
|
29
38
|
export declare const minLengthSchema: Joi.NumberSchema<number>;
|
@@ -36,15 +45,6 @@ export declare const regexSchema: Joi.StringSchema<string>;
|
|
36
45
|
export declare const rowsSchema: Joi.NumberSchema<number>;
|
37
46
|
export declare const suffixSchema: Joi.StringSchema<string>;
|
38
47
|
export declare const classesSchema: Joi.StringSchema<string>;
|
39
|
-
export declare const fileTypesSchema: Joi.ArraySchema<any[]>;
|
40
|
-
export declare const documentTypesSchema: Joi.ArraySchema<any[]>;
|
41
|
-
export declare const imageTypesSchema: Joi.ArraySchema<any[]>;
|
42
|
-
export declare const tabularDataTypesSchema: Joi.ArraySchema<any[]>;
|
43
|
-
export declare const enhancedActionSchema: Joi.StringSchema<string>;
|
44
|
-
export declare const radioIdSchema: Joi.StringSchema<string>;
|
45
|
-
export declare const radioLabelSchema: Joi.StringSchema<string>;
|
46
|
-
export declare const radioHintSchema: Joi.StringSchema<string>;
|
47
|
-
export declare const radioValueSchema: Joi.StringSchema<string>;
|
48
48
|
export declare const questionDetailsFullSchema: {
|
49
49
|
classesSchema: Joi.StringSchema<string>;
|
50
50
|
documentTypesSchema: Joi.ArraySchema<any[]>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/form/form-editor/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAGrB,OAAO,EACL,KAAK,mCAAmC,EACxC,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,EAChC,KAAK,uBAAuB,EAC7B,MAAM,iCAAiC,CAAA;AAExC,oBAAY,oBAAoB;IAC9B,qBAAqB,qBAAqB;IAC1C,YAAY,YAAY;IACxB,YAAY,YAAY;CACzB;AAED,eAAO,MAAM,cAAc,
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/form/form-editor/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAGrB,OAAO,EACL,KAAK,mCAAmC,EACxC,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,EAChC,KAAK,uBAAuB,EAC7B,MAAM,iCAAiC,CAAA;AAExC,oBAAY,oBAAoB;IAC9B,qBAAqB,qBAAqB;IAC1C,YAAY,YAAY;IACxB,YAAY,YAAY;CACzB;AAED,eAAO,MAAM,cAAc,0BAG6C,CAAA;AAExE,eAAO,MAAM,kBAAkB,0BAe2C,CAAA;AAE1E,eAAO,MAAM,sBAAsB,0BAiBmC,CAAA;AAEtE,eAAO,MAAM,sBAAsB,0BAOmB,CAAA;AAEtD,eAAO,MAAM,aAAa,0BAE0C,CAAA;AACpE,eAAO,MAAM,aAAa,0BAQ0B,CAAA;AAEpD,eAAO,MAAM,UAAU,0BAG0B,CAAA;AAEjD,eAAO,MAAM,cAAc,0BAG8B,CAAA;AAEzD,eAAO,MAAM,cAAc,0BAI0C,CAAA;AAErE,eAAO,MAAM,sBAAsB,0BAMhC,CAAA;AAEH,eAAO,MAAM,gBAAgB,0BAO1B,CAAA;AAEH,eAAO,MAAM,cAAc,0BAOxB,CAAA;AAEH,eAAO,MAAM,cAAc,0BAOxB,CAAA;AAEH,eAAO,MAAM,eAAe,wBAOzB,CAAA;AAEH,eAAO,MAAM,mBAAmB,wBAO7B,CAAA;AAEH,eAAO,MAAM,gBAAgB,wBAO1B,CAAA;AAEH,eAAO,MAAM,sBAAsB,wBAIrB,CAAA;AACd,eAAO,MAAM,oBAAoB,0BAIqC,CAAA;AAEtE,eAAO,MAAM,aAAa,0BAI2B,CAAA;AAErD,eAAO,MAAM,gBAAgB,0BAGiC,CAAA;AAE9D,eAAO,MAAM,eAAe,0BAMzB,CAAA;AAEH,eAAO,MAAM,gBAAgB,0BAM1B,CAAA;AAEH,eAAO,MAAM,sBAAsB,0BAGiC,CAAA;AAEpE,eAAO,MAAM,4BAA4B,0BAGmB,CAAA;AAE5D,eAAO,MAAM,iBAAiB,0BAGiC,CAAA;AAE/D,eAAO,MAAM,kBAAkB,0BAEuC,CAAA;AAEtE,eAAO,MAAM,qBAAqB,0BAGe,CAAA;AAEjD,eAAO,MAAM,qBAAqB,0BAGgC,CAAA;AAElE,eAAO,MAAM,SAAS,0BAG4B,CAAA;AAElD,eAAO,MAAM,SAAS,0BAG4B,CAAA;AAElD,eAAO,MAAM,eAAe,0BAI8B,CAAA;AAE1D,eAAO,MAAM,eAAe,0BAI8B,CAAA;AAE1D,eAAO,MAAM,eAAe,0BAIwC,CAAA;AAEpE,eAAO,MAAM,aAAa,0BAIwC,CAAA;AAElE,eAAO,MAAM,eAAe,0BAI0B,CAAA;AAEtD,eAAO,MAAM,YAAY,0BAImC,CAAA;AAE5D,eAAO,MAAM,WAAW,0BAGmC,CAAA;AAE3D,eAAO,MAAM,UAAU,0BAImC,CAAA;AAE1D,eAAO,MAAM,YAAY,0BAImC,CAAA;AAE5D,eAAO,MAAM,aAAa,0BAIoC,CAAA;AAE9D,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BrC,CAAA;AAED,eAAO,MAAM,uBAAuB;;;CAGnC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,yBAAyB,uCAGmC,CAAA;AAEzE,eAAO,MAAM,sCAAsC;;CAElD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,wCAAwC,uDAIO,CAAA;AAE5D,eAAO,MAAM,2BAA2B;;;;;CAKvC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,6BAA6B,2CAMrC,CAAA;AAEL,eAAO,MAAM,+BAA+B;;;;CAI3C,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,iCAAiC,+CAI8B,CAAA"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/form/form-manager/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAKrB,eAAO,MAAM,eAAe,
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/form/form-manager/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAKrB,eAAO,MAAM,eAAe,iGAezB,CAAA"}
|