@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.
Files changed (108) hide show
  1. package/.server/client/javascripts/application.d.ts +1 -0
  2. package/.server/client/javascripts/file-upload.d.ts +9 -0
  3. package/.server/config/index.d.ts +45 -0
  4. package/.server/index.d.ts +1 -0
  5. package/.server/server/common/helpers/logging/logger-options.d.ts +80 -0
  6. package/.server/server/common/helpers/logging/logger.d.ts +1 -0
  7. package/.server/server/common/helpers/logging/request-logger.d.ts +83 -0
  8. package/.server/server/common/helpers/logging/request-tracing.d.ts +7 -0
  9. package/.server/server/common/helpers/redis-client.d.ts +9 -0
  10. package/.server/server/constants.d.ts +3 -0
  11. package/.server/server/index.d.ts +3 -0
  12. package/.server/server/plugins/crumb.d.ts +4 -0
  13. package/.server/server/plugins/engine/components/AutocompleteField.d.ts +55 -0
  14. package/.server/server/plugins/engine/components/CheckboxesField.d.ts +15 -0
  15. package/.server/server/plugins/engine/components/ComponentBase.d.ts +33 -0
  16. package/.server/server/plugins/engine/components/ComponentCollection.d.ts +60 -0
  17. package/.server/server/plugins/engine/components/DatePartsField.d.ts +76 -0
  18. package/.server/server/plugins/engine/components/Details.d.ts +53 -0
  19. package/.server/server/plugins/engine/components/EmailAddressField.d.ts +59 -0
  20. package/.server/server/plugins/engine/components/FileUploadField.d.ts +79 -0
  21. package/.server/server/plugins/engine/components/FormComponent.d.ts +95 -0
  22. package/.server/server/plugins/engine/components/Html.d.ts +53 -0
  23. package/.server/server/plugins/engine/components/InsetText.d.ts +52 -0
  24. package/.server/server/plugins/engine/components/List.d.ts +56 -0
  25. package/.server/server/plugins/engine/components/ListFormComponent.d.ts +71 -0
  26. package/.server/server/plugins/engine/components/Markdown.d.ts +53 -0
  27. package/.server/server/plugins/engine/components/MonthYearField.d.ts +75 -0
  28. package/.server/server/plugins/engine/components/MultilineTextField.d.ts +67 -0
  29. package/.server/server/plugins/engine/components/NumberField.d.ts +68 -0
  30. package/.server/server/plugins/engine/components/RadiosField.d.ts +6 -0
  31. package/.server/server/plugins/engine/components/SelectField.d.ts +55 -0
  32. package/.server/server/plugins/engine/components/SelectionControlField.d.ts +60 -0
  33. package/.server/server/plugins/engine/components/TelephoneNumberField.d.ts +62 -0
  34. package/.server/server/plugins/engine/components/TextField.d.ts +19 -0
  35. package/.server/server/plugins/engine/components/UkAddressField.d.ts +80 -0
  36. package/.server/server/plugins/engine/components/YesNoField.d.ts +19 -0
  37. package/.server/server/plugins/engine/components/YesNoField.js +7 -0
  38. package/.server/server/plugins/engine/components/YesNoField.js.map +1 -1
  39. package/.server/server/plugins/engine/components/constants.d.ts +1 -0
  40. package/.server/server/plugins/engine/components/helpers.d.ts +40 -0
  41. package/.server/server/plugins/engine/components/index.d.ts +24 -0
  42. package/.server/server/plugins/engine/components/types.d.ts +100 -0
  43. package/.server/server/plugins/engine/configureEnginePlugin.d.ts +8 -0
  44. package/.server/server/plugins/engine/helpers.d.ts +74 -0
  45. package/.server/server/plugins/engine/index.d.ts +10 -0
  46. package/.server/server/plugins/engine/models/FormModel.d.ts +59 -0
  47. package/.server/server/plugins/engine/models/RepeatingSummaryViewModel.d.ts +1 -0
  48. package/.server/server/plugins/engine/models/Section.d.ts +1 -0
  49. package/.server/server/plugins/engine/models/SummaryViewModel.d.ts +25 -0
  50. package/.server/server/plugins/engine/models/index.d.ts +2 -0
  51. package/.server/server/plugins/engine/models/types.d.ts +87 -0
  52. package/.server/server/plugins/engine/outputFormatters/human/v1.d.ts +5 -0
  53. package/.server/server/plugins/engine/outputFormatters/index.d.ts +7 -0
  54. package/.server/server/plugins/engine/outputFormatters/machine/v1.d.ts +5 -0
  55. package/.server/server/plugins/engine/outputFormatters/machine/v2.d.ts +5 -0
  56. package/.server/server/plugins/engine/pageControllers/FileUploadPageController.d.ts +61 -0
  57. package/.server/server/plugins/engine/pageControllers/PageController.d.ts +43 -0
  58. package/.server/server/plugins/engine/pageControllers/QuestionPageController.d.ts +58 -0
  59. package/.server/server/plugins/engine/pageControllers/RepeatPageController.d.ts +35 -0
  60. package/.server/server/plugins/engine/pageControllers/StartPageController.d.ts +50 -0
  61. package/.server/server/plugins/engine/pageControllers/StatusPageController.d.ts +12 -0
  62. package/.server/server/plugins/engine/pageControllers/SummaryPageController.d.ts +26 -0
  63. package/.server/server/plugins/engine/pageControllers/TerminalPageController.d.ts +9 -0
  64. package/.server/server/plugins/engine/pageControllers/helpers.d.ts +19 -0
  65. package/.server/server/plugins/engine/pageControllers/index.d.ts +8 -0
  66. package/.server/server/plugins/engine/pageControllers/validationOptions.d.ts +8 -0
  67. package/.server/server/plugins/engine/plugin.d.ts +33 -0
  68. package/.server/server/plugins/engine/referenceNumbers.d.ts +5 -0
  69. package/.server/server/plugins/engine/services/formSubmissionService.d.ts +24 -0
  70. package/.server/server/plugins/engine/services/formsService.d.ts +16 -0
  71. package/.server/server/plugins/engine/services/index.d.ts +3 -0
  72. package/.server/server/plugins/engine/services/localFormsService.d.ts +1 -0
  73. package/.server/server/plugins/engine/services/notifyService.d.ts +5 -0
  74. package/.server/server/plugins/engine/services/uploadService.d.ts +14 -0
  75. package/.server/server/plugins/engine/types.d.ts +256 -0
  76. package/.server/server/plugins/errorPages.d.ts +7 -0
  77. package/.server/server/plugins/nunjucks/context.d.ts +16 -0
  78. package/.server/server/plugins/nunjucks/environment.d.ts +21 -0
  79. package/.server/server/plugins/nunjucks/filters/answer.d.ts +7 -0
  80. package/.server/server/plugins/nunjucks/filters/evaluate.d.ts +8 -0
  81. package/.server/server/plugins/nunjucks/filters/field.d.ts +7 -0
  82. package/.server/server/plugins/nunjucks/filters/highlight.d.ts +7 -0
  83. package/.server/server/plugins/nunjucks/filters/href.d.ts +7 -0
  84. package/.server/server/plugins/nunjucks/filters/index.d.ts +8 -0
  85. package/.server/server/plugins/nunjucks/filters/inspect.d.ts +6 -0
  86. package/.server/server/plugins/nunjucks/filters/page.d.ts +7 -0
  87. package/.server/server/plugins/nunjucks/index.d.ts +3 -0
  88. package/.server/server/plugins/nunjucks/plugin.d.ts +6 -0
  89. package/.server/server/plugins/nunjucks/render.d.ts +21 -0
  90. package/.server/server/plugins/nunjucks/types.d.ts +56 -0
  91. package/.server/server/plugins/pulse.d.ts +11 -0
  92. package/.server/server/plugins/session.d.ts +24 -0
  93. package/.server/server/routes/index.d.ts +1 -0
  94. package/.server/server/routes/public.d.ts +15 -0
  95. package/.server/server/routes/types.d.ts +38 -0
  96. package/.server/server/schemas/index.d.ts +10 -0
  97. package/.server/server/secure-context.d.ts +12 -0
  98. package/.server/server/services/cacheService.d.ts +49 -0
  99. package/.server/server/services/httpService.d.ts +57 -0
  100. package/.server/server/services/index.d.ts +1 -0
  101. package/.server/server/types.d.ts +31 -0
  102. package/.server/server/utils/file-form-service.d.ts +50 -0
  103. package/.server/server/utils/notify.d.ts +17 -0
  104. package/.server/server/utils/secure-context/get-trust-store-certs.d.ts +1 -0
  105. package/.server/server/utils/type-utils.d.ts +3 -0
  106. package/.server/server/utils/utils.d.ts +7 -0
  107. package/package.json +3 -2
  108. package/src/server/plugins/engine/components/YesNoField.ts +7 -0
@@ -0,0 +1,49 @@
1
+ import { type Request, type Server } from '@hapi/hapi';
2
+ import { type FormPayload, type FormState, type FormSubmissionError, type FormSubmissionState } from '~/src/server/plugins/engine/types.js';
3
+ import { type FormRequest, type FormRequestPayload } from '~/src/server/routes/types.js';
4
+ declare enum ADDITIONAL_IDENTIFIER {
5
+ Confirmation = ":confirmation"
6
+ }
7
+ export declare class CacheService {
8
+ /**
9
+ * This service is responsible for getting, storing or deleting a user's session data in the cache. This service has been registered by {@link createServer}
10
+ */
11
+ cache: import("@hapi/catbox").Policy<unknown, {
12
+ cache: string | undefined;
13
+ segment: string;
14
+ }>;
15
+ logger: Server['logger'];
16
+ constructor(server: Server, cacheName?: string);
17
+ getState(request: Request | FormRequest | FormRequestPayload): Promise<FormSubmissionState>;
18
+ setState(request: FormRequest | FormRequestPayload, state: FormSubmissionState): Promise<FormSubmissionState>;
19
+ getConfirmationState(request: FormRequest | FormRequestPayload): Promise<{
20
+ confirmed?: true;
21
+ }>;
22
+ setConfirmationState(request: FormRequest | FormRequestPayload, confirmationState: {
23
+ confirmed?: true;
24
+ }): Promise<void>;
25
+ clearState(request: FormRequest | FormRequestPayload): Promise<void>;
26
+ getFlash(request: FormRequest | FormRequestPayload): {
27
+ errors: FormSubmissionError[];
28
+ } | undefined;
29
+ setFlash(request: FormRequest | FormRequestPayload, message: {
30
+ errors: FormSubmissionError[];
31
+ }): void;
32
+ /**
33
+ * The key used to store user session data against.
34
+ * If there are multiple forms on the same runner instance, for example `form-a` and `form-a-feedback` this will prevent CacheService from clearing data from `form-a` if a user gave feedback before they finished `form-a`
35
+ * @param request - hapi request object
36
+ * @param additionalIdentifier - appended to the id
37
+ */
38
+ Key(request: Request | FormRequest | FormRequestPayload, additionalIdentifier?: ADDITIONAL_IDENTIFIER): {
39
+ segment: string;
40
+ id: string;
41
+ };
42
+ }
43
+ /**
44
+ * State merge helper
45
+ * 1. Merges objects (form fields)
46
+ * 2. Overwrites arrays
47
+ */
48
+ export declare function merge<StateType extends FormState | FormPayload>(state: StateType, update: object): StateType;
49
+ export {};
@@ -0,0 +1,57 @@
1
+ import Wreck from '@hapi/wreck';
2
+ export type Method = keyof Pick<typeof Wreck, 'get' | 'post' | 'put' | 'delete'>;
3
+ export type RequestOptions = Parameters<typeof Wreck.defaults>[0];
4
+ export declare const request: <BodyType = Buffer<ArrayBufferLike>>(method: Method, url: string, options?: RequestOptions) => Promise<{
5
+ res: import("http").IncomingMessage;
6
+ error: Error | NonNullable<BodyType>;
7
+ payload?: undefined;
8
+ } | {
9
+ res: import("http").IncomingMessage;
10
+ payload: BodyType;
11
+ error?: undefined;
12
+ }>;
13
+ export declare const get: <BodyType>(url: string, options?: RequestOptions) => Promise<{
14
+ res: import("http").IncomingMessage;
15
+ error: Error | NonNullable<BodyType>;
16
+ payload?: undefined;
17
+ } | {
18
+ res: import("http").IncomingMessage;
19
+ payload: BodyType;
20
+ error?: undefined;
21
+ }>;
22
+ export declare const getJson: <BodyType extends object>(url: string) => Promise<{
23
+ res: import("http").IncomingMessage;
24
+ error: Error | BodyType;
25
+ payload?: undefined;
26
+ } | {
27
+ res: import("http").IncomingMessage;
28
+ payload: BodyType;
29
+ error?: undefined;
30
+ }>;
31
+ export declare const post: <BodyType>(url: string, options: RequestOptions) => Promise<{
32
+ res: import("http").IncomingMessage;
33
+ error: Error | NonNullable<BodyType>;
34
+ payload?: undefined;
35
+ } | {
36
+ res: import("http").IncomingMessage;
37
+ payload: BodyType;
38
+ error?: undefined;
39
+ }>;
40
+ export declare const postJson: <BodyType extends object>(url: string, options: RequestOptions) => Promise<{
41
+ res: import("http").IncomingMessage;
42
+ error: Error | BodyType;
43
+ payload?: undefined;
44
+ } | {
45
+ res: import("http").IncomingMessage;
46
+ payload: BodyType;
47
+ error?: undefined;
48
+ }>;
49
+ export declare const put: <BodyType>(url: string, options: RequestOptions) => Promise<{
50
+ res: import("http").IncomingMessage;
51
+ error: Error | NonNullable<BodyType>;
52
+ payload?: undefined;
53
+ } | {
54
+ res: import("http").IncomingMessage;
55
+ payload: BodyType;
56
+ error?: undefined;
57
+ }>;
@@ -0,0 +1 @@
1
+ export { CacheService } from '~/src/server/services/cacheService.js';
@@ -0,0 +1,31 @@
1
+ import { type FormDefinition, type FormMetadata, type SubmitPayload, type SubmitResponsePayload } from '@defra/forms-model';
2
+ import { type FormModel } from '~/src/server/plugins/engine/models/index.js';
3
+ import { type DetailItem } from '~/src/server/plugins/engine/models/types.js';
4
+ import { type PageController } from '~/src/server/plugins/engine/pageControllers/PageController.js';
5
+ import { type FormRequestPayload, type FormStatus } from '~/src/server/routes/types.js';
6
+ export interface FormsService {
7
+ getFormMetadata: (slug: string) => Promise<FormMetadata>;
8
+ getFormDefinition: (id: string, state: FormStatus) => Promise<FormDefinition | undefined>;
9
+ }
10
+ export interface FormSubmissionService {
11
+ persistFiles: (files: {
12
+ fileId: string;
13
+ initiatedRetrievalKey: string;
14
+ }[], persistedRetrievalKey: string) => Promise<object>;
15
+ submit: (data: SubmitPayload) => Promise<SubmitResponsePayload | undefined>;
16
+ }
17
+ export interface Services {
18
+ formsService: FormsService;
19
+ formSubmissionService: FormSubmissionService;
20
+ outputService: OutputService;
21
+ }
22
+ export interface RouteConfig {
23
+ formFileName?: string;
24
+ formFilePath?: string;
25
+ enforceCsrf?: boolean;
26
+ services?: Services;
27
+ controllers?: Record<string, typeof PageController>;
28
+ }
29
+ export interface OutputService {
30
+ submit: (request: FormRequestPayload, model: FormModel, emailAddress: string, items: DetailItem[], submitResponse: SubmitResponsePayload) => Promise<void>;
31
+ }
@@ -0,0 +1,50 @@
1
+ /**
2
+ * FileFormService class
3
+ */
4
+ export class FileFormService {
5
+ /**
6
+ * Add form from a file
7
+ * @param {string} filepath - the file path
8
+ * @param {FormMetadata} metadata - the metadata to use for this form
9
+ * @returns {Promise<FormDefinition>}
10
+ */
11
+ addForm(filepath: string, metadata: FormMetadata): Promise<FormDefinition>;
12
+ /**
13
+ * Read the form definition from file
14
+ * @param {string} filepath - the file path
15
+ * @returns {Promise<FormDefinition>}
16
+ */
17
+ readForm(filepath: string): Promise<FormDefinition>;
18
+ /**
19
+ * Read the form definition from a json file
20
+ * @param {string} filepath - the file path
21
+ * @returns {Promise<FormDefinition>}
22
+ */
23
+ readJsonForm(filepath: string): Promise<FormDefinition>;
24
+ /**
25
+ * Read the form definition from a yaml file
26
+ * @param {string} filepath - the file path
27
+ * @returns {Promise<FormDefinition>}
28
+ */
29
+ readYamlForm(filepath: string): Promise<FormDefinition>;
30
+ /**
31
+ * Get the form metadata by slug
32
+ * @param {string} slug - the form slug
33
+ * @returns {FormMetadata}
34
+ */
35
+ getFormMetadata(slug: string): FormMetadata;
36
+ /**
37
+ * Get the form defintion by id
38
+ * @param {string} id - the form id
39
+ * @returns {FormDefinition}
40
+ */
41
+ getFormDefinition(id: string): FormDefinition;
42
+ /**
43
+ * Returns a FormsService compliant interface
44
+ * @returns {import('~/src/server/types.js').FormsService}
45
+ */
46
+ toFormsService(): import("~/src/server/types.js").FormsService;
47
+ #private;
48
+ }
49
+ import type { FormMetadata } from '@defra/forms-model';
50
+ import type { FormDefinition } from '@defra/forms-model';
@@ -0,0 +1,17 @@
1
+ export interface SendNotificationArgs {
2
+ templateId: string;
3
+ emailAddress: string;
4
+ personalisation: {
5
+ subject: string;
6
+ body: string;
7
+ };
8
+ }
9
+ export declare function sendNotification(args: SendNotificationArgs): Promise<{
10
+ res: import("http").IncomingMessage;
11
+ error: object | Error;
12
+ payload?: undefined;
13
+ } | {
14
+ res: import("http").IncomingMessage;
15
+ payload: object;
16
+ error?: undefined;
17
+ }>;
@@ -0,0 +1 @@
1
+ export function getTrustStoreCerts(envs: NodeJS.ProcessEnv): string[];
@@ -0,0 +1,3 @@
1
+ import { type JoiExpression, type LanguageMessages, type LanguageMessagesExt } from 'joi';
2
+ export declare function convertToLanguageMessages(extLanguageMessages: LanguageMessagesExt): LanguageMessages;
3
+ export declare function createJoiExpression(expr: string): JoiExpression;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Returns a set of headers to use in an HTTP request, merging them with any existing headers in options.
3
+ * @param {Record<string, string> | undefined} [existingHeaders] - Optional existing headers to merge with the tracing headers.
4
+ * @param {string} [header] - The tracing header name to use.
5
+ * @returns {Record<string, string> | undefined} The merged headers, or undefined if no tracing header is available.
6
+ */
7
+ export function applyTraceHeaders(existingHeaders?: Record<string, string> | undefined, header?: string): Record<string, string> | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@defra/forms-engine-plugin",
3
- "version": "0.1.19",
3
+ "version": "0.1.21",
4
4
  "description": "Defra forms engine",
5
5
  "type": "module",
6
6
  "files": [
@@ -29,9 +29,10 @@
29
29
  "./package.json": "./package.json"
30
30
  },
31
31
  "scripts": {
32
- "build": "npm run build:server && npm run build:client",
32
+ "build": "rm -rf ./.server && npm run build:server && npm run build:client && npm run build:types",
33
33
  "build:client": "NODE_ENV=${NODE_ENV:-production} webpack",
34
34
  "build:server": "babel --delete-dir-on-start --extensions \".js\",\".ts\" --ignore \"**/*.test.ts\" --copy-files --no-copy-ignored --source-maps --out-dir ./.server ./src",
35
+ "build:types": "tsc -p tsconfig.build.json",
35
36
  "dev": "concurrently \"npm run client:watch\" \"npm run server:watch:dev\" --kill-others --names \"client,server\" --prefix-colors \"red.dim,blue.dim\"",
36
37
  "dev:debug": "concurrently \"npm run client:watch\" \"npm run server:watch:debug\" --kill-others --names \"client,server\" --prefix-colors \"red.dim,blue.dim\"",
37
38
  "format": "npm run format:check -- --write",
@@ -42,6 +42,13 @@ export class YesNoField extends SelectionControlField {
42
42
  * For error preview page that shows all possible errors on a component
43
43
  */
44
44
  getAllPossibleErrors(): ErrorMessageTemplateList {
45
+ return YesNoField.getAllPossibleErrors()
46
+ }
47
+
48
+ /**
49
+ * Static version of getAllPossibleErrors that doesn't require a component instance.
50
+ */
51
+ static getAllPossibleErrors(): ErrorMessageTemplateList {
45
52
  return {
46
53
  baseErrors: [
47
54
  {