@defra/forms-engine-plugin 0.1.19 → 0.1.21
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/client/javascripts/application.d.ts +1 -0
- package/.server/client/javascripts/file-upload.d.ts +9 -0
- package/.server/config/index.d.ts +45 -0
- package/.server/index.d.ts +1 -0
- package/.server/server/common/helpers/logging/logger-options.d.ts +80 -0
- package/.server/server/common/helpers/logging/logger.d.ts +1 -0
- package/.server/server/common/helpers/logging/request-logger.d.ts +83 -0
- package/.server/server/common/helpers/logging/request-tracing.d.ts +7 -0
- package/.server/server/common/helpers/redis-client.d.ts +9 -0
- package/.server/server/constants.d.ts +3 -0
- package/.server/server/index.d.ts +3 -0
- package/.server/server/plugins/crumb.d.ts +4 -0
- package/.server/server/plugins/engine/components/AutocompleteField.d.ts +55 -0
- package/.server/server/plugins/engine/components/CheckboxesField.d.ts +15 -0
- package/.server/server/plugins/engine/components/ComponentBase.d.ts +33 -0
- package/.server/server/plugins/engine/components/ComponentCollection.d.ts +60 -0
- package/.server/server/plugins/engine/components/DatePartsField.d.ts +76 -0
- package/.server/server/plugins/engine/components/Details.d.ts +53 -0
- package/.server/server/plugins/engine/components/EmailAddressField.d.ts +59 -0
- package/.server/server/plugins/engine/components/FileUploadField.d.ts +79 -0
- package/.server/server/plugins/engine/components/FormComponent.d.ts +95 -0
- package/.server/server/plugins/engine/components/Html.d.ts +53 -0
- package/.server/server/plugins/engine/components/InsetText.d.ts +52 -0
- package/.server/server/plugins/engine/components/List.d.ts +56 -0
- package/.server/server/plugins/engine/components/ListFormComponent.d.ts +71 -0
- package/.server/server/plugins/engine/components/Markdown.d.ts +53 -0
- package/.server/server/plugins/engine/components/MonthYearField.d.ts +75 -0
- package/.server/server/plugins/engine/components/MultilineTextField.d.ts +67 -0
- package/.server/server/plugins/engine/components/NumberField.d.ts +68 -0
- package/.server/server/plugins/engine/components/RadiosField.d.ts +6 -0
- package/.server/server/plugins/engine/components/SelectField.d.ts +55 -0
- package/.server/server/plugins/engine/components/SelectionControlField.d.ts +60 -0
- package/.server/server/plugins/engine/components/TelephoneNumberField.d.ts +62 -0
- package/.server/server/plugins/engine/components/TextField.d.ts +19 -0
- package/.server/server/plugins/engine/components/UkAddressField.d.ts +80 -0
- package/.server/server/plugins/engine/components/YesNoField.d.ts +19 -0
- package/.server/server/plugins/engine/components/YesNoField.js +7 -0
- package/.server/server/plugins/engine/components/YesNoField.js.map +1 -1
- package/.server/server/plugins/engine/components/constants.d.ts +1 -0
- package/.server/server/plugins/engine/components/helpers.d.ts +40 -0
- package/.server/server/plugins/engine/components/index.d.ts +24 -0
- package/.server/server/plugins/engine/components/types.d.ts +100 -0
- package/.server/server/plugins/engine/configureEnginePlugin.d.ts +8 -0
- package/.server/server/plugins/engine/helpers.d.ts +74 -0
- package/.server/server/plugins/engine/index.d.ts +10 -0
- package/.server/server/plugins/engine/models/FormModel.d.ts +59 -0
- package/.server/server/plugins/engine/models/RepeatingSummaryViewModel.d.ts +1 -0
- package/.server/server/plugins/engine/models/Section.d.ts +1 -0
- package/.server/server/plugins/engine/models/SummaryViewModel.d.ts +25 -0
- package/.server/server/plugins/engine/models/index.d.ts +2 -0
- package/.server/server/plugins/engine/models/types.d.ts +87 -0
- package/.server/server/plugins/engine/outputFormatters/human/v1.d.ts +5 -0
- package/.server/server/plugins/engine/outputFormatters/index.d.ts +7 -0
- package/.server/server/plugins/engine/outputFormatters/machine/v1.d.ts +5 -0
- package/.server/server/plugins/engine/outputFormatters/machine/v2.d.ts +5 -0
- package/.server/server/plugins/engine/pageControllers/FileUploadPageController.d.ts +61 -0
- package/.server/server/plugins/engine/pageControllers/PageController.d.ts +43 -0
- package/.server/server/plugins/engine/pageControllers/QuestionPageController.d.ts +58 -0
- package/.server/server/plugins/engine/pageControllers/RepeatPageController.d.ts +35 -0
- package/.server/server/plugins/engine/pageControllers/StartPageController.d.ts +50 -0
- package/.server/server/plugins/engine/pageControllers/StatusPageController.d.ts +12 -0
- package/.server/server/plugins/engine/pageControllers/SummaryPageController.d.ts +26 -0
- package/.server/server/plugins/engine/pageControllers/TerminalPageController.d.ts +9 -0
- package/.server/server/plugins/engine/pageControllers/helpers.d.ts +19 -0
- package/.server/server/plugins/engine/pageControllers/index.d.ts +8 -0
- package/.server/server/plugins/engine/pageControllers/validationOptions.d.ts +8 -0
- package/.server/server/plugins/engine/plugin.d.ts +33 -0
- package/.server/server/plugins/engine/referenceNumbers.d.ts +5 -0
- package/.server/server/plugins/engine/services/formSubmissionService.d.ts +24 -0
- package/.server/server/plugins/engine/services/formsService.d.ts +16 -0
- package/.server/server/plugins/engine/services/index.d.ts +3 -0
- package/.server/server/plugins/engine/services/localFormsService.d.ts +1 -0
- package/.server/server/plugins/engine/services/notifyService.d.ts +5 -0
- package/.server/server/plugins/engine/services/uploadService.d.ts +14 -0
- package/.server/server/plugins/engine/types.d.ts +256 -0
- package/.server/server/plugins/errorPages.d.ts +7 -0
- package/.server/server/plugins/nunjucks/context.d.ts +16 -0
- package/.server/server/plugins/nunjucks/environment.d.ts +21 -0
- package/.server/server/plugins/nunjucks/filters/answer.d.ts +7 -0
- package/.server/server/plugins/nunjucks/filters/evaluate.d.ts +8 -0
- package/.server/server/plugins/nunjucks/filters/field.d.ts +7 -0
- package/.server/server/plugins/nunjucks/filters/highlight.d.ts +7 -0
- package/.server/server/plugins/nunjucks/filters/href.d.ts +7 -0
- package/.server/server/plugins/nunjucks/filters/index.d.ts +8 -0
- package/.server/server/plugins/nunjucks/filters/inspect.d.ts +6 -0
- package/.server/server/plugins/nunjucks/filters/page.d.ts +7 -0
- package/.server/server/plugins/nunjucks/index.d.ts +3 -0
- package/.server/server/plugins/nunjucks/plugin.d.ts +6 -0
- package/.server/server/plugins/nunjucks/render.d.ts +21 -0
- package/.server/server/plugins/nunjucks/types.d.ts +56 -0
- package/.server/server/plugins/pulse.d.ts +11 -0
- package/.server/server/plugins/session.d.ts +24 -0
- package/.server/server/routes/index.d.ts +1 -0
- package/.server/server/routes/public.d.ts +15 -0
- package/.server/server/routes/types.d.ts +38 -0
- package/.server/server/schemas/index.d.ts +10 -0
- package/.server/server/secure-context.d.ts +12 -0
- package/.server/server/services/cacheService.d.ts +49 -0
- package/.server/server/services/httpService.d.ts +57 -0
- package/.server/server/services/index.d.ts +1 -0
- package/.server/server/types.d.ts +31 -0
- package/.server/server/utils/file-form-service.d.ts +50 -0
- package/.server/server/utils/notify.d.ts +17 -0
- package/.server/server/utils/secure-context/get-trust-store-certs.d.ts +1 -0
- package/.server/server/utils/type-utils.d.ts +3 -0
- package/.server/server/utils/utils.d.ts +7 -0
- package/package.json +3 -2
- package/src/server/plugins/engine/components/YesNoField.ts +7 -0
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type RadiosFieldComponent } from '@defra/forms-model';
|
|
2
|
+
import { SelectionControlField } from '~/src/server/plugins/engine/components/SelectionControlField.js';
|
|
3
|
+
export declare class RadiosField extends SelectionControlField {
|
|
4
|
+
options: RadiosFieldComponent['options'];
|
|
5
|
+
constructor(def: RadiosFieldComponent, props: ConstructorParameters<typeof SelectionControlField>[1]);
|
|
6
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { type AutocompleteFieldComponent, type SelectFieldComponent } from '@defra/forms-model';
|
|
2
|
+
import { ListFormComponent } from '~/src/server/plugins/engine/components/ListFormComponent.js';
|
|
3
|
+
import { type FormPayload, type FormSubmissionError } from '~/src/server/plugins/engine/types.js';
|
|
4
|
+
export declare class SelectField extends ListFormComponent {
|
|
5
|
+
options: SelectFieldComponent['options'] | AutocompleteFieldComponent['options'];
|
|
6
|
+
constructor(def: SelectFieldComponent | AutocompleteFieldComponent, props: ConstructorParameters<typeof ListFormComponent>[1]);
|
|
7
|
+
getViewModel(payload: FormPayload, errors?: FormSubmissionError[]): {
|
|
8
|
+
items: import("./types.js").ListItem[];
|
|
9
|
+
label: {
|
|
10
|
+
text: string;
|
|
11
|
+
};
|
|
12
|
+
id: string;
|
|
13
|
+
name: string;
|
|
14
|
+
value: import("~/src/server/plugins/engine/types.js").FormValue;
|
|
15
|
+
type?: string;
|
|
16
|
+
hint?: {
|
|
17
|
+
id?: string;
|
|
18
|
+
text: string;
|
|
19
|
+
};
|
|
20
|
+
prefix?: import("./types.js").ComponentText;
|
|
21
|
+
suffix?: import("./types.js").ComponentText;
|
|
22
|
+
classes?: string;
|
|
23
|
+
condition?: string;
|
|
24
|
+
errors?: FormSubmissionError[];
|
|
25
|
+
errorMessage?: {
|
|
26
|
+
text: string;
|
|
27
|
+
};
|
|
28
|
+
summaryHtml?: string;
|
|
29
|
+
html?: string;
|
|
30
|
+
attributes: {
|
|
31
|
+
autocomplete?: string;
|
|
32
|
+
maxlength?: number;
|
|
33
|
+
multiple?: string;
|
|
34
|
+
accept?: string;
|
|
35
|
+
inputmode?: string;
|
|
36
|
+
};
|
|
37
|
+
content?: import("./types.js").Content | import("./types.js").Content[] | string;
|
|
38
|
+
maxlength?: number;
|
|
39
|
+
maxwords?: number;
|
|
40
|
+
rows?: number;
|
|
41
|
+
fieldset?: {
|
|
42
|
+
attributes?: string | Record<string, string>;
|
|
43
|
+
legend?: import("./types.js").Label;
|
|
44
|
+
};
|
|
45
|
+
formGroup?: {
|
|
46
|
+
classes?: string;
|
|
47
|
+
attributes?: string | Record<string, string>;
|
|
48
|
+
};
|
|
49
|
+
components?: import("./types.js").ComponentViewModel[];
|
|
50
|
+
upload?: {
|
|
51
|
+
count: number;
|
|
52
|
+
summaryList: import("~/src/server/plugins/engine/types.js").SummaryList;
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { ListFormComponent } from '~/src/server/plugins/engine/components/ListFormComponent.js';
|
|
2
|
+
import { type ListItem } from '~/src/server/plugins/engine/components/types.js';
|
|
3
|
+
import { type ErrorMessageTemplateList, type FormPayload, type FormSubmissionError } from '~/src/server/plugins/engine/types.js';
|
|
4
|
+
/**
|
|
5
|
+
* "Selection controls" are checkboxes and radios (and switches), as per Material UI nomenclature.
|
|
6
|
+
*/
|
|
7
|
+
export declare class SelectionControlField extends ListFormComponent {
|
|
8
|
+
getViewModel(payload: FormPayload, errors?: FormSubmissionError[]): {
|
|
9
|
+
fieldset: {
|
|
10
|
+
attributes?: string | Record<string, string>;
|
|
11
|
+
legend?: import("~/src/server/plugins/engine/components/types.js").Label;
|
|
12
|
+
};
|
|
13
|
+
items: ListItem[];
|
|
14
|
+
label: {
|
|
15
|
+
text: string;
|
|
16
|
+
};
|
|
17
|
+
id: string;
|
|
18
|
+
name: string;
|
|
19
|
+
value: import("~/src/server/plugins/engine/types.js").FormValue;
|
|
20
|
+
type?: string;
|
|
21
|
+
hint?: {
|
|
22
|
+
id?: string;
|
|
23
|
+
text: string;
|
|
24
|
+
};
|
|
25
|
+
prefix?: import("~/src/server/plugins/engine/components/types.js").ComponentText;
|
|
26
|
+
suffix?: import("~/src/server/plugins/engine/components/types.js").ComponentText;
|
|
27
|
+
classes?: string;
|
|
28
|
+
condition?: string;
|
|
29
|
+
errors?: FormSubmissionError[];
|
|
30
|
+
errorMessage?: {
|
|
31
|
+
text: string;
|
|
32
|
+
};
|
|
33
|
+
summaryHtml?: string;
|
|
34
|
+
html?: string;
|
|
35
|
+
attributes: {
|
|
36
|
+
autocomplete?: string;
|
|
37
|
+
maxlength?: number;
|
|
38
|
+
multiple?: string;
|
|
39
|
+
accept?: string;
|
|
40
|
+
inputmode?: string;
|
|
41
|
+
};
|
|
42
|
+
content?: import("~/src/server/plugins/engine/components/types.js").Content | import("~/src/server/plugins/engine/components/types.js").Content[] | string;
|
|
43
|
+
maxlength?: number;
|
|
44
|
+
maxwords?: number;
|
|
45
|
+
rows?: number;
|
|
46
|
+
formGroup?: {
|
|
47
|
+
classes?: string;
|
|
48
|
+
attributes?: string | Record<string, string>;
|
|
49
|
+
};
|
|
50
|
+
components?: import("~/src/server/plugins/engine/components/types.js").ComponentViewModel[];
|
|
51
|
+
upload?: {
|
|
52
|
+
count: number;
|
|
53
|
+
summaryList: import("~/src/server/plugins/engine/types.js").SummaryList;
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* For error preview page that shows all possible errors on a component
|
|
58
|
+
*/
|
|
59
|
+
getAllPossibleErrors(): ErrorMessageTemplateList;
|
|
60
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { type TelephoneNumberFieldComponent } from '@defra/forms-model';
|
|
2
|
+
import { type StringSchema } from 'joi';
|
|
3
|
+
import { FormComponent } from '~/src/server/plugins/engine/components/FormComponent.js';
|
|
4
|
+
import { type ErrorMessageTemplateList, type FormPayload, type FormSubmissionError } from '~/src/server/plugins/engine/types.js';
|
|
5
|
+
export declare class TelephoneNumberField extends FormComponent {
|
|
6
|
+
options: TelephoneNumberFieldComponent['options'];
|
|
7
|
+
formSchema: StringSchema;
|
|
8
|
+
stateSchema: StringSchema;
|
|
9
|
+
constructor(def: TelephoneNumberFieldComponent, props: ConstructorParameters<typeof FormComponent>[1]);
|
|
10
|
+
getViewModel(payload: FormPayload, errors?: FormSubmissionError[]): {
|
|
11
|
+
type: string;
|
|
12
|
+
label: {
|
|
13
|
+
text: string;
|
|
14
|
+
};
|
|
15
|
+
id: string;
|
|
16
|
+
name: string;
|
|
17
|
+
value: import("~/src/server/plugins/engine/types.js").FormValue;
|
|
18
|
+
hint?: {
|
|
19
|
+
id?: string;
|
|
20
|
+
text: string;
|
|
21
|
+
};
|
|
22
|
+
prefix?: import("./types.js").ComponentText;
|
|
23
|
+
suffix?: import("./types.js").ComponentText;
|
|
24
|
+
classes?: string;
|
|
25
|
+
condition?: string;
|
|
26
|
+
errors?: FormSubmissionError[];
|
|
27
|
+
errorMessage?: {
|
|
28
|
+
text: string;
|
|
29
|
+
};
|
|
30
|
+
summaryHtml?: string;
|
|
31
|
+
html?: string;
|
|
32
|
+
attributes: {
|
|
33
|
+
autocomplete?: string;
|
|
34
|
+
maxlength?: number;
|
|
35
|
+
multiple?: string;
|
|
36
|
+
accept?: string;
|
|
37
|
+
inputmode?: string;
|
|
38
|
+
};
|
|
39
|
+
content?: import("./types.js").Content | import("./types.js").Content[] | string;
|
|
40
|
+
maxlength?: number;
|
|
41
|
+
maxwords?: number;
|
|
42
|
+
rows?: number;
|
|
43
|
+
items?: import("./types.js").ListItem[] | import("./types.js").DateInputItem[];
|
|
44
|
+
fieldset?: {
|
|
45
|
+
attributes?: string | Record<string, string>;
|
|
46
|
+
legend?: import("./types.js").Label;
|
|
47
|
+
};
|
|
48
|
+
formGroup?: {
|
|
49
|
+
classes?: string;
|
|
50
|
+
attributes?: string | Record<string, string>;
|
|
51
|
+
};
|
|
52
|
+
components?: import("./types.js").ComponentViewModel[];
|
|
53
|
+
upload?: {
|
|
54
|
+
count: number;
|
|
55
|
+
summaryList: import("~/src/server/plugins/engine/types.js").SummaryList;
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* For error preview page that shows all possible errors on a component
|
|
60
|
+
*/
|
|
61
|
+
getAllPossibleErrors(): ErrorMessageTemplateList;
|
|
62
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type EmailAddressFieldComponent, type TextFieldComponent } from '@defra/forms-model';
|
|
2
|
+
import { type StringSchema } from 'joi';
|
|
3
|
+
import { FormComponent } from '~/src/server/plugins/engine/components/FormComponent.js';
|
|
4
|
+
import { type ErrorMessageTemplateList, type FormState, type FormStateValue, type FormSubmissionState } from '~/src/server/plugins/engine/types.js';
|
|
5
|
+
export declare class TextField extends FormComponent {
|
|
6
|
+
options: TextFieldComponent['options'] | EmailAddressFieldComponent['options'];
|
|
7
|
+
schema: TextFieldComponent['schema'];
|
|
8
|
+
formSchema: StringSchema;
|
|
9
|
+
stateSchema: StringSchema;
|
|
10
|
+
constructor(def: TextFieldComponent | EmailAddressFieldComponent, props: ConstructorParameters<typeof FormComponent>[1]);
|
|
11
|
+
getFormValueFromState(state: FormSubmissionState): string | undefined;
|
|
12
|
+
getFormValue(value?: FormStateValue | FormState): string | undefined;
|
|
13
|
+
isValue(value?: FormStateValue | FormState): value is string;
|
|
14
|
+
/**
|
|
15
|
+
* For error preview page that shows all possible errors on a component
|
|
16
|
+
*/
|
|
17
|
+
getAllPossibleErrors(): ErrorMessageTemplateList;
|
|
18
|
+
static isText(value?: FormStateValue | FormState): value is string;
|
|
19
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { type UkAddressFieldComponent } from '@defra/forms-model';
|
|
2
|
+
import { type ObjectSchema } from 'joi';
|
|
3
|
+
import { ComponentCollection } from '~/src/server/plugins/engine/components/ComponentCollection.js';
|
|
4
|
+
import { FormComponent } from '~/src/server/plugins/engine/components/FormComponent.js';
|
|
5
|
+
import { type ErrorMessageTemplateList, type FormPayload, type FormState, type FormStateValue, type FormSubmissionError, type FormSubmissionState } from '~/src/server/plugins/engine/types.js';
|
|
6
|
+
export declare class UkAddressField extends FormComponent {
|
|
7
|
+
options: UkAddressFieldComponent['options'];
|
|
8
|
+
formSchema: ObjectSchema<FormPayload>;
|
|
9
|
+
stateSchema: ObjectSchema<FormState>;
|
|
10
|
+
collection: ComponentCollection;
|
|
11
|
+
constructor(def: UkAddressFieldComponent, props: ConstructorParameters<typeof FormComponent>[1]);
|
|
12
|
+
getFormValueFromState(state: FormSubmissionState): UkAddressState | undefined;
|
|
13
|
+
getDisplayStringFromState(state: FormSubmissionState): string;
|
|
14
|
+
getContextValueFromState(state: FormSubmissionState): string[] | null;
|
|
15
|
+
/**
|
|
16
|
+
* Returns one error per child field
|
|
17
|
+
*/
|
|
18
|
+
getViewErrors(errors?: FormSubmissionError[]): FormSubmissionError[] | undefined;
|
|
19
|
+
getViewModel(payload: FormPayload, errors?: FormSubmissionError[]): {
|
|
20
|
+
fieldset: {
|
|
21
|
+
attributes?: string | Record<string, string>;
|
|
22
|
+
legend?: import("./types.js").Label;
|
|
23
|
+
};
|
|
24
|
+
components: import("./types.js").ComponentViewModel[];
|
|
25
|
+
label: {
|
|
26
|
+
text: string;
|
|
27
|
+
};
|
|
28
|
+
id: string;
|
|
29
|
+
name: string;
|
|
30
|
+
value: import("~/src/server/plugins/engine/types.js").FormValue;
|
|
31
|
+
type?: string;
|
|
32
|
+
hint?: {
|
|
33
|
+
id?: string;
|
|
34
|
+
text: string;
|
|
35
|
+
};
|
|
36
|
+
prefix?: import("./types.js").ComponentText;
|
|
37
|
+
suffix?: import("./types.js").ComponentText;
|
|
38
|
+
classes?: string;
|
|
39
|
+
condition?: string;
|
|
40
|
+
errors?: FormSubmissionError[];
|
|
41
|
+
errorMessage?: {
|
|
42
|
+
text: string;
|
|
43
|
+
};
|
|
44
|
+
summaryHtml?: string;
|
|
45
|
+
html?: string;
|
|
46
|
+
attributes: {
|
|
47
|
+
autocomplete?: string;
|
|
48
|
+
maxlength?: number;
|
|
49
|
+
multiple?: string;
|
|
50
|
+
accept?: string;
|
|
51
|
+
inputmode?: string;
|
|
52
|
+
};
|
|
53
|
+
content?: import("./types.js").Content | import("./types.js").Content[] | string;
|
|
54
|
+
maxlength?: number;
|
|
55
|
+
maxwords?: number;
|
|
56
|
+
rows?: number;
|
|
57
|
+
items?: import("./types.js").ListItem[] | import("./types.js").DateInputItem[];
|
|
58
|
+
formGroup?: {
|
|
59
|
+
classes?: string;
|
|
60
|
+
attributes?: string | Record<string, string>;
|
|
61
|
+
};
|
|
62
|
+
upload?: {
|
|
63
|
+
count: number;
|
|
64
|
+
summaryList: import("~/src/server/plugins/engine/types.js").SummaryList;
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
isState(value?: FormStateValue | FormState): value is UkAddressState;
|
|
68
|
+
/**
|
|
69
|
+
* For error preview page that shows all possible errors on a component
|
|
70
|
+
*/
|
|
71
|
+
getAllPossibleErrors(): ErrorMessageTemplateList;
|
|
72
|
+
static isUkAddress(value?: FormStateValue | FormState): value is UkAddressState;
|
|
73
|
+
}
|
|
74
|
+
export interface UkAddressState extends Record<string, string> {
|
|
75
|
+
addressLine1: string;
|
|
76
|
+
addressLine2: string;
|
|
77
|
+
town: string;
|
|
78
|
+
county: string;
|
|
79
|
+
postcode: string;
|
|
80
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type YesNoFieldComponent } from '@defra/forms-model';
|
|
2
|
+
import { SelectionControlField } from '~/src/server/plugins/engine/components/SelectionControlField.js';
|
|
3
|
+
import { type ErrorMessageTemplateList } from '~/src/server/plugins/engine/types.js';
|
|
4
|
+
/**
|
|
5
|
+
* @description
|
|
6
|
+
* YesNoField is a radiosField with predefined values.
|
|
7
|
+
*/
|
|
8
|
+
export declare class YesNoField extends SelectionControlField {
|
|
9
|
+
options: YesNoFieldComponent['options'];
|
|
10
|
+
constructor(def: YesNoFieldComponent, props: ConstructorParameters<typeof SelectionControlField>[1]);
|
|
11
|
+
/**
|
|
12
|
+
* For error preview page that shows all possible errors on a component
|
|
13
|
+
*/
|
|
14
|
+
getAllPossibleErrors(): ErrorMessageTemplateList;
|
|
15
|
+
/**
|
|
16
|
+
* Static version of getAllPossibleErrors that doesn't require a component instance.
|
|
17
|
+
*/
|
|
18
|
+
static getAllPossibleErrors(): ErrorMessageTemplateList;
|
|
19
|
+
}
|
|
@@ -34,6 +34,13 @@ export class YesNoField extends SelectionControlField {
|
|
|
34
34
|
* For error preview page that shows all possible errors on a component
|
|
35
35
|
*/
|
|
36
36
|
getAllPossibleErrors() {
|
|
37
|
+
return YesNoField.getAllPossibleErrors();
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Static version of getAllPossibleErrors that doesn't require a component instance.
|
|
42
|
+
*/
|
|
43
|
+
static getAllPossibleErrors() {
|
|
37
44
|
return {
|
|
38
45
|
baseErrors: [{
|
|
39
46
|
type: 'selectYesNoRequired',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YesNoField.js","names":["SelectionControlField","addClassOptionIfNone","messageTemplate","convertToLanguageMessages","YesNoField","constructor","def","props","list","options","formSchema","required","optional","messages","selectYesNoRequired","getAllPossibleErrors","baseErrors","type","template","advancedSettingsErrors"],"sources":["../../../../../src/server/plugins/engine/components/YesNoField.ts"],"sourcesContent":["import { type YesNoFieldComponent } from '@defra/forms-model'\n\nimport { SelectionControlField } from '~/src/server/plugins/engine/components/SelectionControlField.js'\nimport { addClassOptionIfNone } from '~/src/server/plugins/engine/components/helpers.js'\nimport { messageTemplate } from '~/src/server/plugins/engine/pageControllers/validationOptions.js'\nimport { type ErrorMessageTemplateList } from '~/src/server/plugins/engine/types.js'\nimport { convertToLanguageMessages } from '~/src/server/utils/type-utils.js'\n\n/**\n * @description\n * YesNoField is a radiosField with predefined values.\n */\nexport class YesNoField extends SelectionControlField {\n declare options: YesNoFieldComponent['options']\n\n constructor(\n def: YesNoFieldComponent,\n props: ConstructorParameters<typeof SelectionControlField>[1]\n ) {\n super({ ...def, list: '__yesNo' }, props)\n\n const { options } = def\n let { formSchema } = this\n\n addClassOptionIfNone(options, 'govuk-radios--inline')\n\n if (options.required === false) {\n formSchema = formSchema.optional()\n }\n\n formSchema = formSchema.messages(\n convertToLanguageMessages({\n 'any.required': messageTemplate.selectYesNoRequired\n })\n )\n\n this.formSchema = formSchema\n this.options = options\n }\n\n /**\n * For error preview page that shows all possible errors on a component\n */\n getAllPossibleErrors(): ErrorMessageTemplateList {\n return {\n baseErrors: [\n {\n type: 'selectYesNoRequired',\n template: messageTemplate.selectYesNoRequired\n }\n ],\n advancedSettingsErrors: []\n }\n }\n}\n"],"mappings":"AAEA,SAASA,qBAAqB;AAC9B,SAASC,oBAAoB;AAC7B,SAASC,eAAe;AAExB,SAASC,yBAAyB;;AAElC;AACA;AACA;AACA;AACA,OAAO,MAAMC,UAAU,SAASJ,qBAAqB,CAAC;EAGpDK,WAAWA,CACTC,GAAwB,EACxBC,KAA6D,EAC7D;IACA,KAAK,CAAC;MAAE,GAAGD,GAAG;MAAEE,IAAI,EAAE;IAAU,CAAC,EAAED,KAAK,CAAC;IAEzC,MAAM;MAAEE;IAAQ,CAAC,GAAGH,GAAG;IACvB,IAAI;MAAEI;IAAW,CAAC,GAAG,IAAI;IAEzBT,oBAAoB,CAACQ,OAAO,EAAE,sBAAsB,CAAC;IAErD,IAAIA,OAAO,CAACE,QAAQ,KAAK,KAAK,EAAE;MAC9BD,UAAU,GAAGA,UAAU,CAACE,QAAQ,CAAC,CAAC;IACpC;IAEAF,UAAU,GAAGA,UAAU,CAACG,QAAQ,CAC9BV,yBAAyB,CAAC;MACxB,cAAc,EAAED,eAAe,CAACY;IAClC,CAAC,CACH,CAAC;IAED,IAAI,CAACJ,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACD,OAAO,GAAGA,OAAO;EACxB;;EAEA;AACF;AACA;EACEM,oBAAoBA,CAAA,EAA6B;IAC/C,OAAO;MACLC,UAAU,EAAE,CACV;QACEC,IAAI,EAAE,qBAAqB;QAC3BC,QAAQ,EAAEhB,eAAe,CAACY;MAC5B,CAAC,CACF;MACDK,sBAAsB,EAAE;IAC1B,CAAC;EACH;AACF","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"YesNoField.js","names":["SelectionControlField","addClassOptionIfNone","messageTemplate","convertToLanguageMessages","YesNoField","constructor","def","props","list","options","formSchema","required","optional","messages","selectYesNoRequired","getAllPossibleErrors","baseErrors","type","template","advancedSettingsErrors"],"sources":["../../../../../src/server/plugins/engine/components/YesNoField.ts"],"sourcesContent":["import { type YesNoFieldComponent } from '@defra/forms-model'\n\nimport { SelectionControlField } from '~/src/server/plugins/engine/components/SelectionControlField.js'\nimport { addClassOptionIfNone } from '~/src/server/plugins/engine/components/helpers.js'\nimport { messageTemplate } from '~/src/server/plugins/engine/pageControllers/validationOptions.js'\nimport { type ErrorMessageTemplateList } from '~/src/server/plugins/engine/types.js'\nimport { convertToLanguageMessages } from '~/src/server/utils/type-utils.js'\n\n/**\n * @description\n * YesNoField is a radiosField with predefined values.\n */\nexport class YesNoField extends SelectionControlField {\n declare options: YesNoFieldComponent['options']\n\n constructor(\n def: YesNoFieldComponent,\n props: ConstructorParameters<typeof SelectionControlField>[1]\n ) {\n super({ ...def, list: '__yesNo' }, props)\n\n const { options } = def\n let { formSchema } = this\n\n addClassOptionIfNone(options, 'govuk-radios--inline')\n\n if (options.required === false) {\n formSchema = formSchema.optional()\n }\n\n formSchema = formSchema.messages(\n convertToLanguageMessages({\n 'any.required': messageTemplate.selectYesNoRequired\n })\n )\n\n this.formSchema = formSchema\n this.options = options\n }\n\n /**\n * For error preview page that shows all possible errors on a component\n */\n getAllPossibleErrors(): ErrorMessageTemplateList {\n return YesNoField.getAllPossibleErrors()\n }\n\n /**\n * Static version of getAllPossibleErrors that doesn't require a component instance.\n */\n static getAllPossibleErrors(): ErrorMessageTemplateList {\n return {\n baseErrors: [\n {\n type: 'selectYesNoRequired',\n template: messageTemplate.selectYesNoRequired\n }\n ],\n advancedSettingsErrors: []\n }\n }\n}\n"],"mappings":"AAEA,SAASA,qBAAqB;AAC9B,SAASC,oBAAoB;AAC7B,SAASC,eAAe;AAExB,SAASC,yBAAyB;;AAElC;AACA;AACA;AACA;AACA,OAAO,MAAMC,UAAU,SAASJ,qBAAqB,CAAC;EAGpDK,WAAWA,CACTC,GAAwB,EACxBC,KAA6D,EAC7D;IACA,KAAK,CAAC;MAAE,GAAGD,GAAG;MAAEE,IAAI,EAAE;IAAU,CAAC,EAAED,KAAK,CAAC;IAEzC,MAAM;MAAEE;IAAQ,CAAC,GAAGH,GAAG;IACvB,IAAI;MAAEI;IAAW,CAAC,GAAG,IAAI;IAEzBT,oBAAoB,CAACQ,OAAO,EAAE,sBAAsB,CAAC;IAErD,IAAIA,OAAO,CAACE,QAAQ,KAAK,KAAK,EAAE;MAC9BD,UAAU,GAAGA,UAAU,CAACE,QAAQ,CAAC,CAAC;IACpC;IAEAF,UAAU,GAAGA,UAAU,CAACG,QAAQ,CAC9BV,yBAAyB,CAAC;MACxB,cAAc,EAAED,eAAe,CAACY;IAClC,CAAC,CACH,CAAC;IAED,IAAI,CAACJ,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACD,OAAO,GAAGA,OAAO;EACxB;;EAEA;AACF;AACA;EACEM,oBAAoBA,CAAA,EAA6B;IAC/C,OAAOX,UAAU,CAACW,oBAAoB,CAAC,CAAC;EAC1C;;EAEA;AACF;AACA;EACE,OAAOA,oBAAoBA,CAAA,EAA6B;IACtD,OAAO;MACLC,UAAU,EAAE,CACV;QACEC,IAAI,EAAE,qBAAqB;QAC3BC,QAAQ,EAAEhB,eAAe,CAACY;MAC5B,CAAC,CACF;MACDK,sBAAsB,EAAE;IAC1B,CAAC;EACH;AACF","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const optionalText = " (optional)";
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { ComponentType, type ComponentDef } from '@defra/forms-model';
|
|
2
|
+
import { type ComponentBase } from '~/src/server/plugins/engine/components/ComponentBase.js';
|
|
3
|
+
import { ListFormComponent } from '~/src/server/plugins/engine/components/ListFormComponent.js';
|
|
4
|
+
import * as Components from '~/src/server/plugins/engine/components/index.js';
|
|
5
|
+
import { type FormState } from '~/src/server/plugins/engine/types.js';
|
|
6
|
+
export type Component = InstanceType<(typeof Components)[keyof typeof Components]>;
|
|
7
|
+
export type Field = InstanceType<typeof Components.AutocompleteField | typeof Components.RadiosField | typeof Components.YesNoField | typeof Components.CheckboxesField | typeof Components.DatePartsField | typeof Components.EmailAddressField | typeof Components.MonthYearField | typeof Components.MultilineTextField | typeof Components.NumberField | typeof Components.SelectField | typeof Components.TelephoneNumberField | typeof Components.TextField | typeof Components.UkAddressField | typeof Components.FileUploadField>;
|
|
8
|
+
export type Guidance = InstanceType<typeof Components.Details | typeof Components.Html | typeof Components.Markdown | typeof Components.InsetText | typeof Components.List>;
|
|
9
|
+
export type ListField = InstanceType<typeof Components.AutocompleteField | typeof Components.CheckboxesField | typeof Components.RadiosField | typeof Components.SelectField | typeof Components.YesNoField>;
|
|
10
|
+
/**
|
|
11
|
+
* Filter known components with lists
|
|
12
|
+
*/
|
|
13
|
+
export declare function hasListFormField(field?: Partial<Component>): field is ListFormComponent;
|
|
14
|
+
export declare function isListFieldType(type?: ComponentType): type is ListField['type'];
|
|
15
|
+
/**
|
|
16
|
+
* Create field instance for each {@link ComponentDef} type
|
|
17
|
+
*/
|
|
18
|
+
export declare function createComponent(def: ComponentDef, options: ConstructorParameters<typeof ComponentBase>[1]): Component;
|
|
19
|
+
/**
|
|
20
|
+
* Get formatted answer for a field
|
|
21
|
+
*/
|
|
22
|
+
export declare function getAnswer(field: Field, state: FormState, options?: {
|
|
23
|
+
format: 'data' | 'email' | 'summary';
|
|
24
|
+
}): string;
|
|
25
|
+
/**
|
|
26
|
+
* Get formatted answer for a field (Markdown only)
|
|
27
|
+
*/
|
|
28
|
+
export declare function getAnswerMarkdown(field: Field, state: FormState, options?: {
|
|
29
|
+
format: 'email' | 'summary';
|
|
30
|
+
}): string;
|
|
31
|
+
/**
|
|
32
|
+
* Prevent Markdown formatting
|
|
33
|
+
* @see {@link https://pandoc.org/chunkedhtml-demo/8.11-backslash-escapes.html}
|
|
34
|
+
*/
|
|
35
|
+
export declare function escapeMarkdown(answer: string): string;
|
|
36
|
+
export declare const addClassOptionIfNone: (options: Extract<ComponentDef, {
|
|
37
|
+
options: {
|
|
38
|
+
classes?: string;
|
|
39
|
+
};
|
|
40
|
+
}>["options"], className: string) => void;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IMPORTANT: Exported Components must follow the naming convention implemented in {@link @defra/forms-model#ComponentType}
|
|
3
|
+
* In the Form JSON, components have a type property which is the name of the components, e.g. DatePartsField.
|
|
4
|
+
* Components are loaded in the ComponentsCollection constructor.
|
|
5
|
+
*/
|
|
6
|
+
export { AutocompleteField } from '~/src/server/plugins/engine/components/AutocompleteField.js';
|
|
7
|
+
export { CheckboxesField } from '~/src/server/plugins/engine/components/CheckboxesField.js';
|
|
8
|
+
export { DatePartsField } from '~/src/server/plugins/engine/components/DatePartsField.js';
|
|
9
|
+
export { Details } from '~/src/server/plugins/engine/components/Details.js';
|
|
10
|
+
export { EmailAddressField } from '~/src/server/plugins/engine/components/EmailAddressField.js';
|
|
11
|
+
export { Html } from '~/src/server/plugins/engine/components/Html.js';
|
|
12
|
+
export { InsetText } from '~/src/server/plugins/engine/components/InsetText.js';
|
|
13
|
+
export { List } from '~/src/server/plugins/engine/components/List.js';
|
|
14
|
+
export { Markdown } from '~/src/server/plugins/engine/components/Markdown.js';
|
|
15
|
+
export { MultilineTextField } from '~/src/server/plugins/engine/components/MultilineTextField.js';
|
|
16
|
+
export { NumberField } from '~/src/server/plugins/engine/components/NumberField.js';
|
|
17
|
+
export { RadiosField } from '~/src/server/plugins/engine/components/RadiosField.js';
|
|
18
|
+
export { SelectField } from '~/src/server/plugins/engine/components/SelectField.js';
|
|
19
|
+
export { TelephoneNumberField } from '~/src/server/plugins/engine/components/TelephoneNumberField.js';
|
|
20
|
+
export { TextField } from '~/src/server/plugins/engine/components/TextField.js';
|
|
21
|
+
export { UkAddressField } from '~/src/server/plugins/engine/components/UkAddressField.js';
|
|
22
|
+
export { YesNoField } from '~/src/server/plugins/engine/components/YesNoField.js';
|
|
23
|
+
export { MonthYearField } from '~/src/server/plugins/engine/components/MonthYearField.js';
|
|
24
|
+
export { FileUploadField } from '~/src/server/plugins/engine/components/FileUploadField.js';
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { type ComponentType, type Item } from '@defra/forms-model';
|
|
2
|
+
import { type FormSubmissionError, type FormValue, type SummaryList } from '~/src/server/plugins/engine/types.js';
|
|
3
|
+
export type ComponentText = {
|
|
4
|
+
classes?: string;
|
|
5
|
+
attributes?: string | Record<string, string>;
|
|
6
|
+
} & ({
|
|
7
|
+
text: string;
|
|
8
|
+
html?: string;
|
|
9
|
+
} | {
|
|
10
|
+
text?: string;
|
|
11
|
+
html: string;
|
|
12
|
+
});
|
|
13
|
+
export interface Label {
|
|
14
|
+
text: string;
|
|
15
|
+
classes?: string;
|
|
16
|
+
html?: string;
|
|
17
|
+
isPageHeading?: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface Content {
|
|
20
|
+
title?: string;
|
|
21
|
+
text: string;
|
|
22
|
+
condition?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface BackLink {
|
|
25
|
+
text: string;
|
|
26
|
+
href: string;
|
|
27
|
+
}
|
|
28
|
+
export type ListItemLabel = Omit<Label, 'text' | 'isPageHeading'>;
|
|
29
|
+
export interface ListItem {
|
|
30
|
+
text?: string;
|
|
31
|
+
value?: Item['value'];
|
|
32
|
+
hint?: {
|
|
33
|
+
id?: string;
|
|
34
|
+
text: string;
|
|
35
|
+
};
|
|
36
|
+
checked?: boolean;
|
|
37
|
+
selected?: boolean;
|
|
38
|
+
label?: ListItemLabel;
|
|
39
|
+
condition?: string;
|
|
40
|
+
}
|
|
41
|
+
export interface DateInputItem {
|
|
42
|
+
label?: Label;
|
|
43
|
+
type?: string;
|
|
44
|
+
id?: string;
|
|
45
|
+
name?: string;
|
|
46
|
+
value?: Item['value'];
|
|
47
|
+
classes?: string;
|
|
48
|
+
condition?: undefined;
|
|
49
|
+
}
|
|
50
|
+
export interface ViewModel extends Record<string, unknown> {
|
|
51
|
+
label?: Label;
|
|
52
|
+
type?: string;
|
|
53
|
+
id?: string;
|
|
54
|
+
name?: string;
|
|
55
|
+
value?: FormValue;
|
|
56
|
+
hint?: {
|
|
57
|
+
id?: string;
|
|
58
|
+
text: string;
|
|
59
|
+
};
|
|
60
|
+
prefix?: ComponentText;
|
|
61
|
+
suffix?: ComponentText;
|
|
62
|
+
classes?: string;
|
|
63
|
+
condition?: string;
|
|
64
|
+
errors?: FormSubmissionError[];
|
|
65
|
+
errorMessage?: {
|
|
66
|
+
text: string;
|
|
67
|
+
};
|
|
68
|
+
summaryHtml?: string;
|
|
69
|
+
html?: string;
|
|
70
|
+
attributes: {
|
|
71
|
+
autocomplete?: string;
|
|
72
|
+
maxlength?: number;
|
|
73
|
+
multiple?: string;
|
|
74
|
+
accept?: string;
|
|
75
|
+
inputmode?: string;
|
|
76
|
+
};
|
|
77
|
+
content?: Content | Content[] | string;
|
|
78
|
+
maxlength?: number;
|
|
79
|
+
maxwords?: number;
|
|
80
|
+
rows?: number;
|
|
81
|
+
items?: ListItem[] | DateInputItem[];
|
|
82
|
+
fieldset?: {
|
|
83
|
+
attributes?: string | Record<string, string>;
|
|
84
|
+
legend?: Label;
|
|
85
|
+
};
|
|
86
|
+
formGroup?: {
|
|
87
|
+
classes?: string;
|
|
88
|
+
attributes?: string | Record<string, string>;
|
|
89
|
+
};
|
|
90
|
+
components?: ComponentViewModel[];
|
|
91
|
+
upload?: {
|
|
92
|
+
count: number;
|
|
93
|
+
summaryList: SummaryList;
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
export interface ComponentViewModel {
|
|
97
|
+
type: ComponentType;
|
|
98
|
+
isFormComponent: boolean;
|
|
99
|
+
model: ViewModel;
|
|
100
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type FormDefinition } from '@defra/forms-model';
|
|
2
|
+
import { plugin, type PluginOptions } from '~/src/server/plugins/engine/plugin.js';
|
|
3
|
+
import { type RouteConfig } from '~/src/server/types.js';
|
|
4
|
+
export declare const configureEnginePlugin: ({ formFileName, formFilePath, services, controllers }?: RouteConfig) => Promise<{
|
|
5
|
+
plugin: typeof plugin;
|
|
6
|
+
options: PluginOptions;
|
|
7
|
+
}>;
|
|
8
|
+
export declare function getForm(importPath: string): Promise<FormDefinition>;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { type ComponentDef, type FormDefinition, type Page } from '@defra/forms-model';
|
|
2
|
+
import { type ResponseToolkit, type Server } from '@hapi/hapi';
|
|
3
|
+
import { type ValidationErrorItem } from 'joi';
|
|
4
|
+
import { Liquid } from 'liquidjs';
|
|
5
|
+
import { type FormModel } from '~/src/server/plugins/engine/models/FormModel.js';
|
|
6
|
+
import { type PageControllerClass } from '~/src/server/plugins/engine/pageControllers/helpers.js';
|
|
7
|
+
import { type FormContext, type FormContextRequest, type FormSubmissionError } from '~/src/server/plugins/engine/types.js';
|
|
8
|
+
import { FormStatus, type FormParams, type FormQuery, type FormRequest, type FormRequestPayload } from '~/src/server/routes/types.js';
|
|
9
|
+
export declare const engine: Liquid;
|
|
10
|
+
export interface GlobalScope {
|
|
11
|
+
context: FormContext;
|
|
12
|
+
pages: Map<string, Page>;
|
|
13
|
+
components: Map<string, ComponentDef>;
|
|
14
|
+
}
|
|
15
|
+
export declare function proceed(request: Pick<FormContextRequest, 'method' | 'payload' | 'query'>, h: Pick<ResponseToolkit, 'redirect' | 'view'>, nextUrl: string): import("@hapi/hapi").ResponseObject;
|
|
16
|
+
/**
|
|
17
|
+
* Encodes a URL, returning undefined if the process fails.
|
|
18
|
+
*/
|
|
19
|
+
export declare function encodeUrl(link?: string): string | undefined;
|
|
20
|
+
/**
|
|
21
|
+
* Get page href
|
|
22
|
+
*/
|
|
23
|
+
export declare function getPageHref(page: PageControllerClass, query?: FormQuery): string;
|
|
24
|
+
/**
|
|
25
|
+
* Get page href by path
|
|
26
|
+
*/
|
|
27
|
+
export declare function getPageHref(page: PageControllerClass, path: string, query?: FormQuery): string;
|
|
28
|
+
/**
|
|
29
|
+
* Get redirect path with optional query params
|
|
30
|
+
*/
|
|
31
|
+
export declare function redirectPath(nextUrl: string, query?: FormQuery): string;
|
|
32
|
+
export declare function isPathRelative(path?: string): boolean;
|
|
33
|
+
export declare function normalisePath(path?: string): string;
|
|
34
|
+
export declare function getPage(model: FormModel | undefined, request: FormContextRequest): PageControllerClass;
|
|
35
|
+
export declare function findPage(model: FormModel | undefined, path?: string): PageControllerClass | undefined;
|
|
36
|
+
export declare function getStartPath(model?: FormModel): string;
|
|
37
|
+
export declare function checkFormStatus(params?: FormParams): {
|
|
38
|
+
isPreview: boolean;
|
|
39
|
+
state: FormStatus;
|
|
40
|
+
};
|
|
41
|
+
export declare function checkEmailAddressForLiveFormSubmission(emailAddress: string | undefined, isPreview: boolean): void;
|
|
42
|
+
/**
|
|
43
|
+
* Parses the errors from {@link Schema.validate} so they can be rendered by govuk-frontend templates
|
|
44
|
+
* @param [details] - provided by {@link Schema.validate}
|
|
45
|
+
*/
|
|
46
|
+
export declare function getErrors(details?: ValidationErrorItem[]): FormSubmissionError[] | undefined;
|
|
47
|
+
export declare function getError(detail: ValidationErrorItem): FormSubmissionError;
|
|
48
|
+
/**
|
|
49
|
+
* A small helper to safely generate a crumb token.
|
|
50
|
+
* Checks that the crumb plugin is available, that crumb
|
|
51
|
+
* is not disabled on the current route, and that cookies/state are present.
|
|
52
|
+
*/
|
|
53
|
+
export declare function safeGenerateCrumb(request: FormRequest | FormRequestPayload | null): string | undefined;
|
|
54
|
+
/**
|
|
55
|
+
* Calculates an exponential backoff delay (in milliseconds) based on the current retry depth,
|
|
56
|
+
* using a base delay of 2000ms (2 seconds) and doubling for each additional depth, while capping the delay at 25,000ms (25 seconds).
|
|
57
|
+
* @param depth - The current retry depth (1, 2, 3, …)
|
|
58
|
+
* @returns The calculated delay in milliseconds.
|
|
59
|
+
*/
|
|
60
|
+
export declare function getExponentialBackoffDelay(depth: number): number;
|
|
61
|
+
export declare function evaluateTemplate(template: string, context: FormContext): string;
|
|
62
|
+
export declare function getCacheService(server: Server): import("../../services/cacheService.js").CacheService;
|
|
63
|
+
/**
|
|
64
|
+
* Handles logging and issuing a permanent redirect for legacy routes.
|
|
65
|
+
* @param h - The Hapi response toolkit.
|
|
66
|
+
* @param targetUrl - The URL to redirect to.
|
|
67
|
+
* @returns The Hapi response object configured for permanent redirect.
|
|
68
|
+
*/
|
|
69
|
+
export declare function handleLegacyRedirect(h: ResponseToolkit, targetUrl: string): import("@hapi/hapi").ResponseObject;
|
|
70
|
+
/**
|
|
71
|
+
* If the page doesn't have a title, set it from the title of the first form component
|
|
72
|
+
* @param def - the form definition
|
|
73
|
+
*/
|
|
74
|
+
export declare function setPageTitles(def: FormDefinition): void;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type Environment } from 'nunjucks';
|
|
2
|
+
import { plugin } from '~/src/server/plugins/engine/plugin.js';
|
|
3
|
+
import { type FilterFunction } from '~/src/server/plugins/engine/types.js';
|
|
4
|
+
export { getPageHref } from '~/src/server/plugins/engine/helpers.js';
|
|
5
|
+
export { configureEnginePlugin } from '~/src/server/plugins/engine/configureEnginePlugin.js';
|
|
6
|
+
export { context } from '~/src/server/plugins/nunjucks/context.js';
|
|
7
|
+
export declare const VIEW_PATH = "src/server/plugins/engine/views";
|
|
8
|
+
export declare const PLUGIN_PATH = "node_modules/@defra/forms-engine-plugin";
|
|
9
|
+
export declare const prepareNunjucksEnvironment: (env: Environment, additionalFilters?: Record<string, FilterFunction>) => void;
|
|
10
|
+
export default plugin;
|