@defra/forms-engine-plugin 2.1.5 → 2.1.6
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/.server/server/plugins/engine/components/ComponentBase.d.ts +2 -2
- package/.server/server/plugins/engine/components/ComponentBase.js.map +1 -1
- package/.server/server/plugins/engine/components/ComponentCollection.d.ts +2 -2
- package/.server/server/plugins/engine/components/ComponentCollection.js +1 -1
- package/.server/server/plugins/engine/components/ComponentCollection.js.map +1 -1
- package/.server/server/plugins/engine/components/TelephoneNumberField.js +1 -1
- package/.server/server/plugins/engine/components/TelephoneNumberField.js.map +1 -1
- package/.server/server/plugins/engine/components/YesNoField.js +1 -1
- package/.server/server/plugins/engine/components/YesNoField.js.map +1 -1
- package/.server/server/plugins/engine/components/{helpers.d.ts → helpers/components.d.ts} +3 -10
- package/.server/server/plugins/engine/components/{helpers.js → helpers/components.js} +16 -29
- package/.server/server/plugins/engine/components/helpers/components.js.map +1 -0
- package/.server/server/plugins/engine/components/helpers/index.d.ts +11 -0
- package/.server/server/plugins/engine/components/helpers/index.js +15 -0
- package/.server/server/plugins/engine/components/helpers/index.js.map +1 -0
- package/.server/server/plugins/engine/helpers.d.ts +1 -1
- package/.server/server/plugins/engine/helpers.js +1 -1
- package/.server/server/plugins/engine/helpers.js.map +1 -1
- package/.server/server/plugins/engine/models/FormModel.d.ts +2 -2
- package/.server/server/plugins/engine/models/FormModel.js +2 -2
- package/.server/server/plugins/engine/models/FormModel.js.map +1 -1
- package/.server/server/plugins/engine/models/SummaryViewModel.d.ts +1 -1
- package/.server/server/plugins/engine/models/SummaryViewModel.js +1 -1
- package/.server/server/plugins/engine/models/SummaryViewModel.js.map +1 -1
- package/.server/server/plugins/engine/models/types.d.ts +2 -2
- package/.server/server/plugins/engine/models/types.js.map +1 -1
- package/.server/server/plugins/engine/outputFormatters/human/v1.js +2 -1
- package/.server/server/plugins/engine/outputFormatters/human/v1.js.map +1 -1
- package/.server/server/plugins/engine/outputFormatters/machine/v1.js +1 -1
- package/.server/server/plugins/engine/outputFormatters/machine/v1.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/FileUploadPageController.js +1 -1
- package/.server/server/plugins/engine/pageControllers/FileUploadPageController.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/SummaryPageController.js +1 -1
- package/.server/server/plugins/engine/pageControllers/SummaryPageController.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/helpers/index.d.ts +9 -0
- package/.server/server/plugins/engine/pageControllers/helpers/index.js +15 -0
- package/.server/server/plugins/engine/pageControllers/helpers/index.js.map +1 -0
- package/.server/server/plugins/engine/pageControllers/{helpers.d.ts → helpers/pages.d.ts} +1 -10
- package/.server/server/plugins/engine/pageControllers/{helpers.js → helpers/pages.js} +2 -17
- package/.server/server/plugins/engine/pageControllers/helpers/pages.js.map +1 -0
- package/.server/server/plugins/engine/routes/index.d.ts +1 -1
- package/.server/server/plugins/engine/routes/index.js.map +1 -1
- package/.server/server/plugins/engine/routes/questions.js.map +1 -1
- package/.server/server/plugins/engine/services/notifyService.js +1 -1
- package/.server/server/plugins/engine/services/notifyService.js.map +1 -1
- package/.server/server/plugins/engine/types.d.ts +3 -3
- package/.server/server/plugins/engine/types.js.map +1 -1
- package/.server/server/plugins/nunjucks/filters/answer.js +2 -2
- package/.server/server/plugins/nunjucks/filters/answer.js.map +1 -1
- package/.server/server/plugins/nunjucks/filters/answer.test.js +2 -2
- package/.server/server/plugins/nunjucks/filters/answer.test.js.map +1 -1
- package/package.json +1 -1
- package/src/server/plugins/engine/components/AutocompleteField.test.ts +1 -1
- package/src/server/plugins/engine/components/CheckboxesField.test.ts +1 -1
- package/src/server/plugins/engine/components/ComponentBase.ts +2 -2
- package/src/server/plugins/engine/components/ComponentCollection.ts +2 -2
- package/src/server/plugins/engine/components/DatePartsField.test.ts +1 -1
- package/src/server/plugins/engine/components/Details.test.ts +1 -1
- package/src/server/plugins/engine/components/EmailAddressField.test.ts +1 -1
- package/src/server/plugins/engine/components/FileUploadField.test.ts +2 -2
- package/src/server/plugins/engine/components/Html.test.ts +1 -1
- package/src/server/plugins/engine/components/InsetText.test.ts +1 -1
- package/src/server/plugins/engine/components/List.test.ts +1 -1
- package/src/server/plugins/engine/components/Markdown.test.ts +1 -1
- package/src/server/plugins/engine/components/MonthYearField.test.ts +1 -1
- package/src/server/plugins/engine/components/MultilineTextField.test.ts +1 -1
- package/src/server/plugins/engine/components/NumberField.test.ts +1 -1
- package/src/server/plugins/engine/components/RadiosField.test.ts +1 -1
- package/src/server/plugins/engine/components/SelectField.test.ts +1 -1
- package/src/server/plugins/engine/components/TelephoneNumberField.test.ts +1 -1
- package/src/server/plugins/engine/components/TelephoneNumberField.ts +1 -1
- package/src/server/plugins/engine/components/TextField.test.ts +1 -1
- package/src/server/plugins/engine/components/UkAddressField.test.ts +1 -1
- package/src/server/plugins/engine/components/YesNoField.test.ts +1 -1
- package/src/server/plugins/engine/components/YesNoField.ts +1 -1
- package/src/server/plugins/engine/components/{helpers.ts → helpers/components.ts} +41 -77
- package/src/server/plugins/engine/components/{helpers.test.ts → helpers/helpers.test.ts} +1 -1
- package/src/server/plugins/engine/components/helpers/index.ts +38 -0
- package/src/server/plugins/engine/helpers.test.ts +1 -1
- package/src/server/plugins/engine/helpers.ts +2 -2
- package/src/server/plugins/engine/models/FormModel.ts +2 -2
- package/src/server/plugins/engine/models/SummaryViewModel.test.ts +1 -1
- package/src/server/plugins/engine/models/SummaryViewModel.ts +2 -2
- package/src/server/plugins/engine/models/types.ts +4 -4
- package/src/server/plugins/engine/outputFormatters/adapter/v1.test.ts +1 -1
- package/src/server/plugins/engine/outputFormatters/human/v1.ts +2 -4
- package/src/server/plugins/engine/outputFormatters/machine/v1.test.ts +1 -1
- package/src/server/plugins/engine/outputFormatters/machine/v1.ts +1 -1
- package/src/server/plugins/engine/outputFormatters/machine/v2.test.ts +1 -1
- package/src/server/plugins/engine/pageControllers/FileUploadPageController.test.ts +1 -1
- package/src/server/plugins/engine/pageControllers/FileUploadPageController.ts +1 -1
- package/src/server/plugins/engine/pageControllers/SummaryPageController.ts +1 -1
- package/src/server/plugins/engine/pageControllers/{helpers.test.ts → helpers/helpers.test.ts} +2 -2
- package/src/server/plugins/engine/pageControllers/helpers/index.ts +20 -0
- package/src/server/plugins/engine/pageControllers/{helpers.ts → helpers/pages.ts} +1 -22
- package/src/server/plugins/engine/routes/index.ts +1 -1
- package/src/server/plugins/engine/routes/questions.test.ts +1 -1
- package/src/server/plugins/engine/routes/questions.ts +1 -1
- package/src/server/plugins/engine/services/notifyService.test.ts +1 -1
- package/src/server/plugins/engine/services/notifyService.ts +1 -1
- package/src/server/plugins/engine/types.ts +3 -3
- package/src/server/plugins/nunjucks/filters/answer.js +2 -2
- package/src/server/plugins/nunjucks/filters/answer.test.js +7 -4
- package/.server/server/plugins/engine/components/helpers.js.map +0 -1
- package/.server/server/plugins/engine/pageControllers/helpers.js.map +0 -1
|
@@ -5,7 +5,7 @@ import { ComponentCollection } from '~/src/server/plugins/engine/components/Comp
|
|
|
5
5
|
import {
|
|
6
6
|
getAnswer,
|
|
7
7
|
type Field
|
|
8
|
-
} from '~/src/server/plugins/engine/components/helpers.js'
|
|
8
|
+
} from '~/src/server/plugins/engine/components/helpers/components.js'
|
|
9
9
|
import { type DateInputItem } from '~/src/server/plugins/engine/components/types.js'
|
|
10
10
|
import { FormModel } from '~/src/server/plugins/engine/models/FormModel.js'
|
|
11
11
|
import {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ComponentType, type DetailsComponent } from '@defra/forms-model'
|
|
2
2
|
|
|
3
3
|
import { ComponentCollection } from '~/src/server/plugins/engine/components/ComponentCollection.js'
|
|
4
|
-
import { type Guidance } from '~/src/server/plugins/engine/components/helpers.js'
|
|
4
|
+
import { type Guidance } from '~/src/server/plugins/engine/components/helpers/components.js'
|
|
5
5
|
import { FormModel } from '~/src/server/plugins/engine/models/FormModel.js'
|
|
6
6
|
import definition from '~/test/form/definitions/basic.js'
|
|
7
7
|
|
|
@@ -7,7 +7,7 @@ import { ComponentCollection } from '~/src/server/plugins/engine/components/Comp
|
|
|
7
7
|
import {
|
|
8
8
|
getAnswer,
|
|
9
9
|
type Field
|
|
10
|
-
} from '~/src/server/plugins/engine/components/helpers.js'
|
|
10
|
+
} from '~/src/server/plugins/engine/components/helpers/components.js'
|
|
11
11
|
import { FormModel } from '~/src/server/plugins/engine/models/FormModel.js'
|
|
12
12
|
import definition from '~/test/form/definitions/blank.js'
|
|
13
13
|
import { getFormData, getFormState } from '~/test/helpers/component-helpers.js'
|
|
@@ -8,12 +8,12 @@ import { tempItemSchema } from '~/src/server/plugins/engine/components/FileUploa
|
|
|
8
8
|
import {
|
|
9
9
|
getAnswer,
|
|
10
10
|
type Field
|
|
11
|
-
} from '~/src/server/plugins/engine/components/helpers.js'
|
|
11
|
+
} from '~/src/server/plugins/engine/components/helpers/components.js'
|
|
12
12
|
import { FormModel } from '~/src/server/plugins/engine/models/FormModel.js'
|
|
13
13
|
import {
|
|
14
14
|
createPage,
|
|
15
15
|
type PageControllerClass
|
|
16
|
-
} from '~/src/server/plugins/engine/pageControllers/helpers.js'
|
|
16
|
+
} from '~/src/server/plugins/engine/pageControllers/helpers/pages.js'
|
|
17
17
|
import { validationOptions as opts } from '~/src/server/plugins/engine/pageControllers/validationOptions.js'
|
|
18
18
|
import {
|
|
19
19
|
FileStatus,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ComponentType, type HtmlComponent } from '@defra/forms-model'
|
|
2
2
|
|
|
3
3
|
import { ComponentCollection } from '~/src/server/plugins/engine/components/ComponentCollection.js'
|
|
4
|
-
import { type Guidance } from '~/src/server/plugins/engine/components/helpers.js'
|
|
4
|
+
import { type Guidance } from '~/src/server/plugins/engine/components/helpers/components.js'
|
|
5
5
|
import { FormModel } from '~/src/server/plugins/engine/models/FormModel.js'
|
|
6
6
|
import definition from '~/test/form/definitions/basic.js'
|
|
7
7
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ComponentType, type InsetTextComponent } from '@defra/forms-model'
|
|
2
2
|
|
|
3
3
|
import { ComponentCollection } from '~/src/server/plugins/engine/components/ComponentCollection.js'
|
|
4
|
-
import { type Guidance } from '~/src/server/plugins/engine/components/helpers.js'
|
|
4
|
+
import { type Guidance } from '~/src/server/plugins/engine/components/helpers/components.js'
|
|
5
5
|
import { FormModel } from '~/src/server/plugins/engine/models/FormModel.js'
|
|
6
6
|
import definition from '~/test/form/definitions/basic.js'
|
|
7
7
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ComponentType, type ListComponent } from '@defra/forms-model'
|
|
2
2
|
|
|
3
3
|
import { ComponentCollection } from '~/src/server/plugins/engine/components/ComponentCollection.js'
|
|
4
|
-
import { type Guidance } from '~/src/server/plugins/engine/components/helpers.js'
|
|
4
|
+
import { type Guidance } from '~/src/server/plugins/engine/components/helpers/components.js'
|
|
5
5
|
import { FormModel } from '~/src/server/plugins/engine/models/FormModel.js'
|
|
6
6
|
import definition from '~/test/form/definitions/basic.js'
|
|
7
7
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ComponentType, type MarkdownComponent } from '@defra/forms-model'
|
|
2
2
|
|
|
3
3
|
import { ComponentCollection } from '~/src/server/plugins/engine/components/ComponentCollection.js'
|
|
4
|
-
import { type Guidance } from '~/src/server/plugins/engine/components/helpers.js'
|
|
4
|
+
import { type Guidance } from '~/src/server/plugins/engine/components/helpers/components.js'
|
|
5
5
|
import { FormModel } from '~/src/server/plugins/engine/models/FormModel.js'
|
|
6
6
|
import definition from '~/test/form/definitions/basic.js'
|
|
7
7
|
|
|
@@ -5,7 +5,7 @@ import { ComponentCollection } from '~/src/server/plugins/engine/components/Comp
|
|
|
5
5
|
import {
|
|
6
6
|
getAnswer,
|
|
7
7
|
type Field
|
|
8
|
-
} from '~/src/server/plugins/engine/components/helpers.js'
|
|
8
|
+
} from '~/src/server/plugins/engine/components/helpers/components.js'
|
|
9
9
|
import { type DateInputItem } from '~/src/server/plugins/engine/components/types.js'
|
|
10
10
|
import { FormModel } from '~/src/server/plugins/engine/models/FormModel.js'
|
|
11
11
|
import {
|
|
@@ -8,7 +8,7 @@ import { MultilineTextField } from '~/src/server/plugins/engine/components/Multi
|
|
|
8
8
|
import {
|
|
9
9
|
getAnswer,
|
|
10
10
|
type Field
|
|
11
|
-
} from '~/src/server/plugins/engine/components/helpers.js'
|
|
11
|
+
} from '~/src/server/plugins/engine/components/helpers/components.js'
|
|
12
12
|
import { FormModel } from '~/src/server/plugins/engine/models/FormModel.js'
|
|
13
13
|
import definition from '~/test/form/definitions/blank.js'
|
|
14
14
|
import { getFormData, getFormState } from '~/test/helpers/component-helpers.js'
|
|
@@ -5,7 +5,7 @@ import { NumberField } from '~/src/server/plugins/engine/components/NumberField.
|
|
|
5
5
|
import {
|
|
6
6
|
getAnswer,
|
|
7
7
|
type Field
|
|
8
|
-
} from '~/src/server/plugins/engine/components/helpers.js'
|
|
8
|
+
} from '~/src/server/plugins/engine/components/helpers/components.js'
|
|
9
9
|
import { FormModel } from '~/src/server/plugins/engine/models/FormModel.js'
|
|
10
10
|
import definition from '~/test/form/definitions/blank.js'
|
|
11
11
|
import { getFormData, getFormState } from '~/test/helpers/component-helpers.js'
|
|
@@ -6,7 +6,7 @@ import { RadiosField } from '~/src/server/plugins/engine/components/RadiosField.
|
|
|
6
6
|
import {
|
|
7
7
|
getAnswer,
|
|
8
8
|
type Field
|
|
9
|
-
} from '~/src/server/plugins/engine/components/helpers.js'
|
|
9
|
+
} from '~/src/server/plugins/engine/components/helpers/components.js'
|
|
10
10
|
import { FormModel } from '~/src/server/plugins/engine/models/FormModel.js'
|
|
11
11
|
import {
|
|
12
12
|
listNumber,
|
|
@@ -6,7 +6,7 @@ import { SelectField } from '~/src/server/plugins/engine/components/SelectField.
|
|
|
6
6
|
import {
|
|
7
7
|
getAnswer,
|
|
8
8
|
type Field
|
|
9
|
-
} from '~/src/server/plugins/engine/components/helpers.js'
|
|
9
|
+
} from '~/src/server/plugins/engine/components/helpers/components.js'
|
|
10
10
|
import { FormModel } from '~/src/server/plugins/engine/models/FormModel.js'
|
|
11
11
|
import {
|
|
12
12
|
listNumber,
|
|
@@ -7,7 +7,7 @@ import { ComponentCollection } from '~/src/server/plugins/engine/components/Comp
|
|
|
7
7
|
import {
|
|
8
8
|
getAnswer,
|
|
9
9
|
type Field
|
|
10
|
-
} from '~/src/server/plugins/engine/components/helpers.js'
|
|
10
|
+
} from '~/src/server/plugins/engine/components/helpers/components.js'
|
|
11
11
|
import { FormModel } from '~/src/server/plugins/engine/models/FormModel.js'
|
|
12
12
|
import definition from '~/test/form/definitions/blank.js'
|
|
13
13
|
import { getFormData, getFormState } from '~/test/helpers/component-helpers.js'
|
|
@@ -2,7 +2,7 @@ import { type TelephoneNumberFieldComponent } from '@defra/forms-model'
|
|
|
2
2
|
import joi, { type StringSchema } from 'joi'
|
|
3
3
|
|
|
4
4
|
import { FormComponent } from '~/src/server/plugins/engine/components/FormComponent.js'
|
|
5
|
-
import { addClassOptionIfNone } from '~/src/server/plugins/engine/components/helpers.js'
|
|
5
|
+
import { addClassOptionIfNone } from '~/src/server/plugins/engine/components/helpers/index.js'
|
|
6
6
|
import { messageTemplate } from '~/src/server/plugins/engine/pageControllers/validationOptions.js'
|
|
7
7
|
import {
|
|
8
8
|
type ErrorMessageTemplateList,
|
|
@@ -4,7 +4,7 @@ import { ComponentCollection } from '~/src/server/plugins/engine/components/Comp
|
|
|
4
4
|
import {
|
|
5
5
|
getAnswer,
|
|
6
6
|
type Field
|
|
7
|
-
} from '~/src/server/plugins/engine/components/helpers.js'
|
|
7
|
+
} from '~/src/server/plugins/engine/components/helpers/components.js'
|
|
8
8
|
import { FormModel } from '~/src/server/plugins/engine/models/FormModel.js'
|
|
9
9
|
import definition from '~/test/form/definitions/blank.js'
|
|
10
10
|
import { getFormData, getFormState } from '~/test/helpers/component-helpers.js'
|
|
@@ -9,7 +9,7 @@ import { UkAddressField } from '~/src/server/plugins/engine/components/UkAddress
|
|
|
9
9
|
import {
|
|
10
10
|
getAnswer,
|
|
11
11
|
type Field
|
|
12
|
-
} from '~/src/server/plugins/engine/components/helpers.js'
|
|
12
|
+
} from '~/src/server/plugins/engine/components/helpers/components.js'
|
|
13
13
|
import { type ViewModel } from '~/src/server/plugins/engine/components/types.js'
|
|
14
14
|
import { FormModel } from '~/src/server/plugins/engine/models/FormModel.js'
|
|
15
15
|
import {
|
|
@@ -4,7 +4,7 @@ import { ComponentCollection } from '~/src/server/plugins/engine/components/Comp
|
|
|
4
4
|
import {
|
|
5
5
|
getAnswer,
|
|
6
6
|
type Field
|
|
7
|
-
} from '~/src/server/plugins/engine/components/helpers.js'
|
|
7
|
+
} from '~/src/server/plugins/engine/components/helpers/components.js'
|
|
8
8
|
import { FormModel } from '~/src/server/plugins/engine/models/FormModel.js'
|
|
9
9
|
import { listYesNoExamples } from '~/test/fixtures/list.js'
|
|
10
10
|
import definition from '~/test/form/definitions/blank.js'
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
} from '@defra/forms-model'
|
|
7
7
|
|
|
8
8
|
import { SelectionControlField } from '~/src/server/plugins/engine/components/SelectionControlField.js'
|
|
9
|
-
import { addClassOptionIfNone } from '~/src/server/plugins/engine/components/helpers.js'
|
|
9
|
+
import { addClassOptionIfNone } from '~/src/server/plugins/engine/components/helpers/index.js'
|
|
10
10
|
import { messageTemplate } from '~/src/server/plugins/engine/pageControllers/validationOptions.js'
|
|
11
11
|
import { type ErrorMessageTemplateList } from '~/src/server/plugins/engine/types.js'
|
|
12
12
|
import { convertToLanguageMessages } from '~/src/server/utils/type-utils.js'
|
|
@@ -4,49 +4,10 @@ import { Marked, type Token } from 'marked'
|
|
|
4
4
|
import { config } from '~/src/config/index.js'
|
|
5
5
|
import { type ComponentBase } from '~/src/server/plugins/engine/components/ComponentBase.js'
|
|
6
6
|
import { ListFormComponent } from '~/src/server/plugins/engine/components/ListFormComponent.js'
|
|
7
|
+
import { escapeMarkdown } from '~/src/server/plugins/engine/components/helpers/index.js'
|
|
7
8
|
import * as Components from '~/src/server/plugins/engine/components/index.js'
|
|
8
9
|
import { type FormState } from '~/src/server/plugins/engine/types.js'
|
|
9
10
|
|
|
10
|
-
const designerUrl = config.get('designerUrl')
|
|
11
|
-
|
|
12
|
-
const markdown = new Marked({
|
|
13
|
-
breaks: true,
|
|
14
|
-
gfm: true,
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Render paragraphs without `<p>` wrappers
|
|
18
|
-
* for check answers summary list `<dd>`
|
|
19
|
-
*/
|
|
20
|
-
extensions: [
|
|
21
|
-
{
|
|
22
|
-
name: 'paragraph',
|
|
23
|
-
renderer({ tokens = [] }) {
|
|
24
|
-
const text = this.parser.parseInline(tokens)
|
|
25
|
-
return tokens.length > 1 ? `${text}<br>` : text
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
],
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Restrict allowed Markdown tokens
|
|
32
|
-
*/
|
|
33
|
-
walkTokens(token) {
|
|
34
|
-
const tokens: Token['type'][] = [
|
|
35
|
-
'br',
|
|
36
|
-
'escape',
|
|
37
|
-
'list',
|
|
38
|
-
'list_item',
|
|
39
|
-
'paragraph',
|
|
40
|
-
'space',
|
|
41
|
-
'text'
|
|
42
|
-
]
|
|
43
|
-
|
|
44
|
-
if (!tokens.includes(token.type)) {
|
|
45
|
-
token.type = 'text'
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
})
|
|
49
|
-
|
|
50
11
|
// All component instances
|
|
51
12
|
export type Component = InstanceType<
|
|
52
13
|
(typeof Components)[keyof typeof Components]
|
|
@@ -88,6 +49,46 @@ export type ListField = InstanceType<
|
|
|
88
49
|
| typeof Components.YesNoField
|
|
89
50
|
>
|
|
90
51
|
|
|
52
|
+
export const designerUrl = config.get('designerUrl')
|
|
53
|
+
|
|
54
|
+
export const markdown = new Marked({
|
|
55
|
+
breaks: true,
|
|
56
|
+
gfm: true,
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Render paragraphs without `<p>` wrappers
|
|
60
|
+
* for check answers summary list `<dd>`
|
|
61
|
+
*/
|
|
62
|
+
extensions: [
|
|
63
|
+
{
|
|
64
|
+
name: 'paragraph',
|
|
65
|
+
renderer({ tokens = [] }) {
|
|
66
|
+
const text = this.parser.parseInline(tokens)
|
|
67
|
+
return tokens.length > 1 ? `${text}<br>` : text
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
],
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Restrict allowed Markdown tokens
|
|
74
|
+
*/
|
|
75
|
+
walkTokens(token) {
|
|
76
|
+
const tokens: Token['type'][] = [
|
|
77
|
+
'br',
|
|
78
|
+
'escape',
|
|
79
|
+
'list',
|
|
80
|
+
'list_item',
|
|
81
|
+
'paragraph',
|
|
82
|
+
'space',
|
|
83
|
+
'text'
|
|
84
|
+
]
|
|
85
|
+
|
|
86
|
+
if (!tokens.includes(token.type)) {
|
|
87
|
+
token.type = 'text'
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
})
|
|
91
|
+
|
|
91
92
|
/**
|
|
92
93
|
* Filter known components with lists
|
|
93
94
|
*/
|
|
@@ -328,40 +329,3 @@ export function getAnswerMarkdown(
|
|
|
328
329
|
|
|
329
330
|
return answerEscaped
|
|
330
331
|
}
|
|
331
|
-
|
|
332
|
-
/**
|
|
333
|
-
* Prevent Markdown formatting
|
|
334
|
-
* @see {@link https://pandoc.org/chunkedhtml-demo/8.11-backslash-escapes.html}
|
|
335
|
-
*/
|
|
336
|
-
export function escapeMarkdown(answer: string) {
|
|
337
|
-
const punctuation = [
|
|
338
|
-
'`',
|
|
339
|
-
"'",
|
|
340
|
-
'*',
|
|
341
|
-
'_',
|
|
342
|
-
'{',
|
|
343
|
-
'}',
|
|
344
|
-
'[',
|
|
345
|
-
']',
|
|
346
|
-
'(',
|
|
347
|
-
')',
|
|
348
|
-
'#',
|
|
349
|
-
'+',
|
|
350
|
-
'-',
|
|
351
|
-
'.',
|
|
352
|
-
'!'
|
|
353
|
-
]
|
|
354
|
-
|
|
355
|
-
for (const character of punctuation) {
|
|
356
|
-
answer = answer.toString().replaceAll(character, `\\${character}`)
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
return answer
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
export const addClassOptionIfNone = (
|
|
363
|
-
options: Extract<ComponentDef, { options: { classes?: string } }>['options'],
|
|
364
|
-
className: string
|
|
365
|
-
) => {
|
|
366
|
-
options.classes ??= className
|
|
367
|
-
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type ComponentDef } from '@defra/forms-model'
|
|
2
2
|
|
|
3
3
|
import { ComponentBase } from '~/src/server/plugins/engine/components/ComponentBase.js'
|
|
4
|
-
import { createComponent } from '~/src/server/plugins/engine/components/helpers.js'
|
|
4
|
+
import { createComponent } from '~/src/server/plugins/engine/components/helpers/components.js'
|
|
5
5
|
import { FormModel } from '~/src/server/plugins/engine/models/FormModel.js'
|
|
6
6
|
import definition from '~/test/form/definitions/basic.js'
|
|
7
7
|
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type ComponentDef } from '@defra/forms-model'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Prevent Markdown formatting
|
|
5
|
+
* @see {@link https://pandoc.org/chunkedhtml-demo/8.11-backslash-escapes.html}
|
|
6
|
+
*/
|
|
7
|
+
export function escapeMarkdown(answer: string) {
|
|
8
|
+
const punctuation = [
|
|
9
|
+
'`',
|
|
10
|
+
"'",
|
|
11
|
+
'*',
|
|
12
|
+
'_',
|
|
13
|
+
'{',
|
|
14
|
+
'}',
|
|
15
|
+
'[',
|
|
16
|
+
']',
|
|
17
|
+
'(',
|
|
18
|
+
')',
|
|
19
|
+
'#',
|
|
20
|
+
'+',
|
|
21
|
+
'-',
|
|
22
|
+
'.',
|
|
23
|
+
'!'
|
|
24
|
+
]
|
|
25
|
+
|
|
26
|
+
for (const character of punctuation) {
|
|
27
|
+
answer = answer.toString().replaceAll(character, `\\${character}`)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return answer
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export const addClassOptionIfNone = (
|
|
34
|
+
options: Extract<ComponentDef, { options: { classes?: string } }>['options'],
|
|
35
|
+
className: string
|
|
36
|
+
) => {
|
|
37
|
+
options.classes ??= className
|
|
38
|
+
}
|
|
@@ -22,7 +22,7 @@ import { buildFormContextRequest } from '~/src/server/plugins/engine/pageControl
|
|
|
22
22
|
import {
|
|
23
23
|
createPage,
|
|
24
24
|
type PageControllerClass
|
|
25
|
-
} from '~/src/server/plugins/engine/pageControllers/helpers.js'
|
|
25
|
+
} from '~/src/server/plugins/engine/pageControllers/helpers/pages.js'
|
|
26
26
|
import {
|
|
27
27
|
type FormContext,
|
|
28
28
|
type FormContextRequest
|
|
@@ -19,9 +19,9 @@ import { createLogger } from '~/src/server/common/helpers/logging/logger.js'
|
|
|
19
19
|
import {
|
|
20
20
|
getAnswer,
|
|
21
21
|
type Field
|
|
22
|
-
} from '~/src/server/plugins/engine/components/helpers.js'
|
|
22
|
+
} from '~/src/server/plugins/engine/components/helpers/components.js'
|
|
23
23
|
import { type FormModel } from '~/src/server/plugins/engine/models/FormModel.js'
|
|
24
|
-
import { type PageControllerClass } from '~/src/server/plugins/engine/pageControllers/helpers.js'
|
|
24
|
+
import { type PageControllerClass } from '~/src/server/plugins/engine/pageControllers/helpers/pages.js'
|
|
25
25
|
import {
|
|
26
26
|
type FormContext,
|
|
27
27
|
type FormContextRequest,
|
|
@@ -33,7 +33,7 @@ import {} from '~/src/server/plugins/engine/components/YesNoField.js'
|
|
|
33
33
|
import {
|
|
34
34
|
hasListFormField,
|
|
35
35
|
type Component
|
|
36
|
-
} from '~/src/server/plugins/engine/components/helpers.js'
|
|
36
|
+
} from '~/src/server/plugins/engine/components/helpers/components.js'
|
|
37
37
|
import { todayAsDateOnly } from '~/src/server/plugins/engine/date-helper.js'
|
|
38
38
|
import {
|
|
39
39
|
findPage,
|
|
@@ -46,7 +46,7 @@ import { type PageController } from '~/src/server/plugins/engine/pageControllers
|
|
|
46
46
|
import {
|
|
47
47
|
createPage,
|
|
48
48
|
type PageControllerClass
|
|
49
|
-
} from '~/src/server/plugins/engine/pageControllers/helpers.js'
|
|
49
|
+
} from '~/src/server/plugins/engine/pageControllers/helpers/pages.js'
|
|
50
50
|
import { validationOptions as opts } from '~/src/server/plugins/engine/pageControllers/validationOptions.js'
|
|
51
51
|
import * as defaultServices from '~/src/server/plugins/engine/services/index.js'
|
|
52
52
|
import {
|
|
@@ -9,7 +9,7 @@ import { serverWithSaveAndReturn } from '~/src/server/plugins/engine/pageControl
|
|
|
9
9
|
import {
|
|
10
10
|
createPage,
|
|
11
11
|
type PageControllerClass
|
|
12
|
-
} from '~/src/server/plugins/engine/pageControllers/helpers.js'
|
|
12
|
+
} from '~/src/server/plugins/engine/pageControllers/helpers/pages.js'
|
|
13
13
|
import {
|
|
14
14
|
type FormContext,
|
|
15
15
|
type FormContextRequest,
|
|
@@ -3,7 +3,7 @@ import { type Section } from '@defra/forms-model'
|
|
|
3
3
|
import {
|
|
4
4
|
getAnswer,
|
|
5
5
|
type Field
|
|
6
|
-
} from '~/src/server/plugins/engine/components/helpers.js'
|
|
6
|
+
} from '~/src/server/plugins/engine/components/helpers/components.js'
|
|
7
7
|
import {
|
|
8
8
|
type BackLink,
|
|
9
9
|
type ComponentViewModel
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
type DetailItemRepeat
|
|
21
21
|
} from '~/src/server/plugins/engine/models/types.js'
|
|
22
22
|
import { RepeatPageController } from '~/src/server/plugins/engine/pageControllers/RepeatPageController.js'
|
|
23
|
-
import { type PageControllerClass } from '~/src/server/plugins/engine/pageControllers/helpers.js'
|
|
23
|
+
import { type PageControllerClass } from '~/src/server/plugins/engine/pageControllers/helpers/pages.js'
|
|
24
24
|
import { validationOptions as opts } from '~/src/server/plugins/engine/pageControllers/validationOptions.js'
|
|
25
25
|
import {
|
|
26
26
|
type CheckAnswers,
|
|
@@ -6,11 +6,11 @@ import {
|
|
|
6
6
|
import { type Expression } from 'expr-eval'
|
|
7
7
|
|
|
8
8
|
import {
|
|
9
|
-
|
|
10
|
-
type
|
|
11
|
-
} from '~/src/server/plugins/engine/components/helpers.js'
|
|
9
|
+
getAnswer,
|
|
10
|
+
type Field
|
|
11
|
+
} from '~/src/server/plugins/engine/components/helpers/components.js'
|
|
12
12
|
import { type RepeatPageController } from '~/src/server/plugins/engine/pageControllers/RepeatPageController.js'
|
|
13
|
-
import { type PageControllerClass } from '~/src/server/plugins/engine/pageControllers/helpers.js'
|
|
13
|
+
import { type PageControllerClass } from '~/src/server/plugins/engine/pageControllers/helpers/pages.js'
|
|
14
14
|
import {
|
|
15
15
|
type FormState,
|
|
16
16
|
type FormSubmissionError
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type FormMetadata } from '@defra/forms-model'
|
|
2
2
|
|
|
3
3
|
import { FileUploadField } from '~/src/server/plugins/engine/components/FileUploadField.js'
|
|
4
|
-
import { type Field } from '~/src/server/plugins/engine/components/helpers.js'
|
|
4
|
+
import { type Field } from '~/src/server/plugins/engine/components/helpers/components.js'
|
|
5
5
|
import { FormModel } from '~/src/server/plugins/engine/models/index.js'
|
|
6
6
|
import {
|
|
7
7
|
type DetailItem,
|
|
@@ -5,10 +5,8 @@ import {
|
|
|
5
5
|
import { addDays, format as dateFormat } from 'date-fns'
|
|
6
6
|
|
|
7
7
|
import { config } from '~/src/config/index.js'
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
getAnswer
|
|
11
|
-
} from '~/src/server/plugins/engine/components/helpers.js'
|
|
8
|
+
import { getAnswer } from '~/src/server/plugins/engine/components/helpers/components.js'
|
|
9
|
+
import { escapeMarkdown } from '~/src/server/plugins/engine/components/helpers/index.js'
|
|
12
10
|
import { type checkFormStatus } from '~/src/server/plugins/engine/helpers.js'
|
|
13
11
|
import { type FormModel } from '~/src/server/plugins/engine/models/index.js'
|
|
14
12
|
import { type DetailItem } from '~/src/server/plugins/engine/models/types.js'
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
2
2
|
|
|
3
3
|
import { FileUploadField } from '~/src/server/plugins/engine/components/FileUploadField.js'
|
|
4
|
-
import { type Field } from '~/src/server/plugins/engine/components/helpers.js'
|
|
4
|
+
import { type Field } from '~/src/server/plugins/engine/components/helpers/components.js'
|
|
5
5
|
import { FormModel } from '~/src/server/plugins/engine/models/index.js'
|
|
6
6
|
import {
|
|
7
7
|
type DetailItem,
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from '@defra/forms-model'
|
|
5
5
|
|
|
6
6
|
import { config } from '~/src/config/index.js'
|
|
7
|
-
import { getAnswer } from '~/src/server/plugins/engine/components/helpers.js'
|
|
7
|
+
import { getAnswer } from '~/src/server/plugins/engine/components/helpers/components.js'
|
|
8
8
|
import { FileUploadField } from '~/src/server/plugins/engine/components/index.js'
|
|
9
9
|
import { type checkFormStatus } from '~/src/server/plugins/engine/helpers.js'
|
|
10
10
|
import { type FormModel } from '~/src/server/plugins/engine/models/index.js'
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
2
2
|
|
|
3
3
|
import { FileUploadField } from '~/src/server/plugins/engine/components/FileUploadField.js'
|
|
4
|
-
import { type Field } from '~/src/server/plugins/engine/components/helpers.js'
|
|
4
|
+
import { type Field } from '~/src/server/plugins/engine/components/helpers/components.js'
|
|
5
5
|
import { FormModel } from '~/src/server/plugins/engine/models/index.js'
|
|
6
6
|
import {
|
|
7
7
|
type DetailItem,
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
} from '~/src/server/plugins/engine/pageControllers/FileUploadPageController.js'
|
|
16
16
|
import { QuestionPageController } from '~/src/server/plugins/engine/pageControllers/QuestionPageController.js'
|
|
17
17
|
import { serverWithSaveAndReturn } from '~/src/server/plugins/engine/pageControllers/__stubs__/server.js'
|
|
18
|
-
import * as pageHelpers from '~/src/server/plugins/engine/pageControllers/helpers.js'
|
|
18
|
+
import * as pageHelpers from '~/src/server/plugins/engine/pageControllers/helpers/index.js'
|
|
19
19
|
import * as uploadService from '~/src/server/plugins/engine/services/uploadService.js'
|
|
20
20
|
import {
|
|
21
21
|
FileStatus,
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
} from '~/src/server/plugins/engine/helpers.js'
|
|
16
16
|
import { type FormModel } from '~/src/server/plugins/engine/models/index.js'
|
|
17
17
|
import { QuestionPageController } from '~/src/server/plugins/engine/pageControllers/QuestionPageController.js'
|
|
18
|
-
import { getProxyUrlForLocalDevelopment } from '~/src/server/plugins/engine/pageControllers/helpers.js'
|
|
18
|
+
import { getProxyUrlForLocalDevelopment } from '~/src/server/plugins/engine/pageControllers/helpers/index.js'
|
|
19
19
|
import {
|
|
20
20
|
getUploadStatus,
|
|
21
21
|
initiateUpload
|
|
@@ -9,7 +9,7 @@ import { type ResponseToolkit, type RouteOptions } from '@hapi/hapi'
|
|
|
9
9
|
|
|
10
10
|
import { ComponentCollection } from '~/src/server/plugins/engine/components/ComponentCollection.js'
|
|
11
11
|
import { FileUploadField } from '~/src/server/plugins/engine/components/FileUploadField.js'
|
|
12
|
-
import { getAnswer } from '~/src/server/plugins/engine/components/helpers.js'
|
|
12
|
+
import { getAnswer } from '~/src/server/plugins/engine/components/helpers/components.js'
|
|
13
13
|
import {
|
|
14
14
|
checkEmailAddressForLiveFormSubmission,
|
|
15
15
|
checkFormStatus,
|
package/src/server/plugins/engine/pageControllers/{helpers.test.ts → helpers/helpers.test.ts}
RENAMED
|
@@ -8,12 +8,12 @@ import {
|
|
|
8
8
|
|
|
9
9
|
import { FormModel } from '~/src/server/plugins/engine/models/FormModel.js'
|
|
10
10
|
import { PageController } from '~/src/server/plugins/engine/pageControllers/PageController.js'
|
|
11
|
+
import { getProxyUrlForLocalDevelopment } from '~/src/server/plugins/engine/pageControllers/helpers/index.js'
|
|
11
12
|
import {
|
|
12
13
|
createPage,
|
|
13
|
-
getProxyUrlForLocalDevelopment,
|
|
14
14
|
isPageController,
|
|
15
15
|
type PageControllerType
|
|
16
|
-
} from '~/src/server/plugins/engine/pageControllers/helpers.js'
|
|
16
|
+
} from '~/src/server/plugins/engine/pageControllers/helpers/pages.js'
|
|
17
17
|
import {
|
|
18
18
|
FileUploadPageController,
|
|
19
19
|
QuestionPageController,
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In local development environments, we sometimes need to rewrite the
|
|
3
|
+
* CDP upload URL to work with CSP/CORS restrictions.
|
|
4
|
+
* This helper function rewrites localhost URLs to use the sslip.io proxy
|
|
5
|
+
* This is only used when running locally with a development proxy.
|
|
6
|
+
* In non-local environments, this function returns null
|
|
7
|
+
* @param uploadUrl - The original upload URL from CDP
|
|
8
|
+
*/
|
|
9
|
+
export function getProxyUrlForLocalDevelopment(
|
|
10
|
+
uploadUrl?: string
|
|
11
|
+
): string | null {
|
|
12
|
+
if (!uploadUrl?.includes('localhost:7337')) {
|
|
13
|
+
return null
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return uploadUrl.replace(
|
|
17
|
+
/localhost:7337/g,
|
|
18
|
+
'uploader.127.0.0.1.sslip.io:7300'
|
|
19
|
+
)
|
|
20
|
+
}
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
type Page
|
|
6
6
|
} from '@defra/forms-model'
|
|
7
7
|
|
|
8
|
-
import { type FormModel } from '~/src/server/plugins/engine/models/
|
|
8
|
+
import { type FormModel } from '~/src/server/plugins/engine/models/index.js'
|
|
9
9
|
import * as PageControllers from '~/src/server/plugins/engine/pageControllers/index.js'
|
|
10
10
|
|
|
11
11
|
export function isPageController(
|
|
@@ -78,24 +78,3 @@ export function createPage(model: FormModel, pageDef: Page) {
|
|
|
78
78
|
|
|
79
79
|
return controller
|
|
80
80
|
}
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* In local development environments, we sometimes need to rewrite the
|
|
84
|
-
* CDP upload URL to work with CSP/CORS restrictions.
|
|
85
|
-
* This helper function rewrites localhost URLs to use the sslip.io proxy
|
|
86
|
-
* This is only used when running locally with a development proxy.
|
|
87
|
-
* In non-local environments, this function returns null
|
|
88
|
-
* @param uploadUrl - The original upload URL from CDP
|
|
89
|
-
*/
|
|
90
|
-
export function getProxyUrlForLocalDevelopment(
|
|
91
|
-
uploadUrl?: string
|
|
92
|
-
): string | null {
|
|
93
|
-
if (!uploadUrl?.includes('localhost:7337')) {
|
|
94
|
-
return null
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
return uploadUrl.replace(
|
|
98
|
-
/localhost:7337/g,
|
|
99
|
-
'uploader.127.0.0.1.sslip.io:7300'
|
|
100
|
-
)
|
|
101
|
-
}
|