@defra/forms-engine-plugin 4.0.10 → 4.0.11

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.
@@ -1,7 +1,6 @@
1
- import { ControllerType, type Page } from '@defra/forms-model';
1
+ import { type Page } from '@defra/forms-model';
2
2
  import { type FormModel } from '~/src/server/plugins/engine/models/index.js';
3
3
  import * as PageControllers from '~/src/server/plugins/engine/pageControllers/index.js';
4
- export declare function isPageController(controllerName?: string | ControllerType): controllerName is keyof typeof PageControllers;
5
4
  export type PageControllerClass = InstanceType<PageControllerType>;
6
5
  export type PageControllerType = (typeof PageControllers)[keyof typeof PageControllers];
7
6
  /**
@@ -1,12 +1,5 @@
1
- import { ControllerType, controllerNameFromPath, isControllerName } from '@defra/forms-model';
1
+ import { ControllerType, controllerNameFromPath } from '@defra/forms-model';
2
2
  import * as PageControllers from "../index.js";
3
- export function isPageController(controllerName) {
4
- // Handle SummaryWithConfirmationEmail as it uses SummaryPageController
5
- if (controllerName === ControllerType.SummaryWithConfirmationEmail) {
6
- return true;
7
- }
8
- return isControllerName(controllerName) && controllerName in PageControllers;
9
- }
10
3
  /**
11
4
  * Creates page instance for each {@link Page} type
12
5
  */
@@ -34,9 +27,6 @@ export function createPage(model, pageDef) {
34
27
  case ControllerType.Summary:
35
28
  controller = new PageControllers.SummaryPageController(model, pageDef);
36
29
  break;
37
- case ControllerType.SummaryWithConfirmationEmail:
38
- controller = new PageControllers.SummaryPageController(model, pageDef);
39
- break;
40
30
  case ControllerType.Status:
41
31
  controller = new PageControllers.StatusPageController(model, pageDef);
42
32
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"pages.js","names":["ControllerType","controllerNameFromPath","isControllerName","PageControllers","isPageController","controllerName","SummaryWithConfirmationEmail","createPage","model","pageDef","controller","QuestionPageController","Start","StartPageController","Page","Terminal","TerminalPageController","Summary","SummaryPageController","Status","StatusPageController","FileUpload","FileUploadPageController","Repeat","RepeatPageController","controllers","Ctrl","Error"],"sources":["../../../../../../src/server/plugins/engine/pageControllers/helpers/pages.ts"],"sourcesContent":["import {\n ControllerType,\n controllerNameFromPath,\n isControllerName,\n type Page\n} from '@defra/forms-model'\n\nimport { type FormModel } from '~/src/server/plugins/engine/models/index.js'\nimport * as PageControllers from '~/src/server/plugins/engine/pageControllers/index.js'\n\nexport function isPageController(\n controllerName?: string | ControllerType\n): controllerName is keyof typeof PageControllers {\n // Handle SummaryWithConfirmationEmail as it uses SummaryPageController\n if (controllerName === ControllerType.SummaryWithConfirmationEmail) {\n return true\n }\n return isControllerName(controllerName) && controllerName in PageControllers\n}\n\nexport type PageControllerClass = InstanceType<PageControllerType>\nexport type PageControllerType =\n (typeof PageControllers)[keyof typeof PageControllers]\n\n/**\n * Creates page instance for each {@link Page} type\n */\nexport function createPage(model: FormModel, pageDef: Page) {\n const controllerName = controllerNameFromPath(pageDef.controller)\n\n if (!pageDef.controller) {\n return new PageControllers.QuestionPageController(model, pageDef)\n }\n\n // Patch legacy controllers\n if (controllerName && pageDef.controller !== controllerName) {\n pageDef.controller = controllerName\n }\n\n let controller: PageControllerClass | undefined\n\n switch (pageDef.controller) {\n case ControllerType.Start:\n controller = new PageControllers.StartPageController(model, pageDef)\n break\n\n case ControllerType.Page:\n controller = new PageControllers.QuestionPageController(model, pageDef)\n break\n\n case ControllerType.Terminal:\n controller = new PageControllers.TerminalPageController(model, pageDef)\n break\n\n case ControllerType.Summary:\n controller = new PageControllers.SummaryPageController(model, pageDef)\n break\n\n case ControllerType.SummaryWithConfirmationEmail:\n controller = new PageControllers.SummaryPageController(model, pageDef)\n break\n\n case ControllerType.Status:\n controller = new PageControllers.StatusPageController(model, pageDef)\n break\n\n case ControllerType.FileUpload:\n controller = new PageControllers.FileUploadPageController(model, pageDef)\n break\n\n case ControllerType.Repeat:\n controller = new PageControllers.RepeatPageController(model, pageDef)\n break\n }\n\n if (typeof controller === 'undefined') {\n if (model.controllers?.[pageDef.controller]) {\n const Ctrl = model.controllers[pageDef.controller]\n controller = new Ctrl(model, pageDef) as unknown as PageControllerClass // type assertion needed because TS can't verify custom controller structure\n }\n }\n\n if (typeof controller === 'undefined') {\n throw new Error(`Page controller ${pageDef.controller} does not exist`)\n }\n\n return controller\n}\n"],"mappings":"AAAA,SACEA,cAAc,EACdC,sBAAsB,EACtBC,gBAAgB,QAEX,oBAAoB;AAG3B,OAAO,KAAKC,eAAe;AAE3B,OAAO,SAASC,gBAAgBA,CAC9BC,cAAwC,EACQ;EAChD;EACA,IAAIA,cAAc,KAAKL,cAAc,CAACM,4BAA4B,EAAE;IAClE,OAAO,IAAI;EACb;EACA,OAAOJ,gBAAgB,CAACG,cAAc,CAAC,IAAIA,cAAc,IAAIF,eAAe;AAC9E;AAMA;AACA;AACA;AACA,OAAO,SAASI,UAAUA,CAACC,KAAgB,EAAEC,OAAa,EAAE;EAC1D,MAAMJ,cAAc,GAAGJ,sBAAsB,CAACQ,OAAO,CAACC,UAAU,CAAC;EAEjE,IAAI,CAACD,OAAO,CAACC,UAAU,EAAE;IACvB,OAAO,IAAIP,eAAe,CAACQ,sBAAsB,CAACH,KAAK,EAAEC,OAAO,CAAC;EACnE;;EAEA;EACA,IAAIJ,cAAc,IAAII,OAAO,CAACC,UAAU,KAAKL,cAAc,EAAE;IAC3DI,OAAO,CAACC,UAAU,GAAGL,cAAc;EACrC;EAEA,IAAIK,UAA2C;EAE/C,QAAQD,OAAO,CAACC,UAAU;IACxB,KAAKV,cAAc,CAACY,KAAK;MACvBF,UAAU,GAAG,IAAIP,eAAe,CAACU,mBAAmB,CAACL,KAAK,EAAEC,OAAO,CAAC;MACpE;IAEF,KAAKT,cAAc,CAACc,IAAI;MACtBJ,UAAU,GAAG,IAAIP,eAAe,CAACQ,sBAAsB,CAACH,KAAK,EAAEC,OAAO,CAAC;MACvE;IAEF,KAAKT,cAAc,CAACe,QAAQ;MAC1BL,UAAU,GAAG,IAAIP,eAAe,CAACa,sBAAsB,CAACR,KAAK,EAAEC,OAAO,CAAC;MACvE;IAEF,KAAKT,cAAc,CAACiB,OAAO;MACzBP,UAAU,GAAG,IAAIP,eAAe,CAACe,qBAAqB,CAACV,KAAK,EAAEC,OAAO,CAAC;MACtE;IAEF,KAAKT,cAAc,CAACM,4BAA4B;MAC9CI,UAAU,GAAG,IAAIP,eAAe,CAACe,qBAAqB,CAACV,KAAK,EAAEC,OAAO,CAAC;MACtE;IAEF,KAAKT,cAAc,CAACmB,MAAM;MACxBT,UAAU,GAAG,IAAIP,eAAe,CAACiB,oBAAoB,CAACZ,KAAK,EAAEC,OAAO,CAAC;MACrE;IAEF,KAAKT,cAAc,CAACqB,UAAU;MAC5BX,UAAU,GAAG,IAAIP,eAAe,CAACmB,wBAAwB,CAACd,KAAK,EAAEC,OAAO,CAAC;MACzE;IAEF,KAAKT,cAAc,CAACuB,MAAM;MACxBb,UAAU,GAAG,IAAIP,eAAe,CAACqB,oBAAoB,CAAChB,KAAK,EAAEC,OAAO,CAAC;MACrE;EACJ;EAEA,IAAI,OAAOC,UAAU,KAAK,WAAW,EAAE;IACrC,IAAIF,KAAK,CAACiB,WAAW,GAAGhB,OAAO,CAACC,UAAU,CAAC,EAAE;MAC3C,MAAMgB,IAAI,GAAGlB,KAAK,CAACiB,WAAW,CAAChB,OAAO,CAACC,UAAU,CAAC;MAClDA,UAAU,GAAG,IAAIgB,IAAI,CAAClB,KAAK,EAAEC,OAAO,CAAmC,EAAC;IAC1E;EACF;EAEA,IAAI,OAAOC,UAAU,KAAK,WAAW,EAAE;IACrC,MAAM,IAAIiB,KAAK,CAAC,mBAAmBlB,OAAO,CAACC,UAAU,iBAAiB,CAAC;EACzE;EAEA,OAAOA,UAAU;AACnB","ignoreList":[]}
1
+ {"version":3,"file":"pages.js","names":["ControllerType","controllerNameFromPath","PageControllers","createPage","model","pageDef","controllerName","controller","QuestionPageController","Start","StartPageController","Page","Terminal","TerminalPageController","Summary","SummaryPageController","Status","StatusPageController","FileUpload","FileUploadPageController","Repeat","RepeatPageController","controllers","Ctrl","Error"],"sources":["../../../../../../src/server/plugins/engine/pageControllers/helpers/pages.ts"],"sourcesContent":["import {\n ControllerType,\n controllerNameFromPath,\n type Page\n} from '@defra/forms-model'\n\nimport { type FormModel } from '~/src/server/plugins/engine/models/index.js'\nimport * as PageControllers from '~/src/server/plugins/engine/pageControllers/index.js'\n\nexport type PageControllerClass = InstanceType<PageControllerType>\nexport type PageControllerType =\n (typeof PageControllers)[keyof typeof PageControllers]\n\n/**\n * Creates page instance for each {@link Page} type\n */\nexport function createPage(model: FormModel, pageDef: Page) {\n const controllerName = controllerNameFromPath(pageDef.controller)\n\n if (!pageDef.controller) {\n return new PageControllers.QuestionPageController(model, pageDef)\n }\n\n // Patch legacy controllers\n if (controllerName && pageDef.controller !== controllerName) {\n pageDef.controller = controllerName\n }\n\n let controller: PageControllerClass | undefined\n\n switch (pageDef.controller) {\n case ControllerType.Start:\n controller = new PageControllers.StartPageController(model, pageDef)\n break\n\n case ControllerType.Page:\n controller = new PageControllers.QuestionPageController(model, pageDef)\n break\n\n case ControllerType.Terminal:\n controller = new PageControllers.TerminalPageController(model, pageDef)\n break\n\n case ControllerType.Summary:\n controller = new PageControllers.SummaryPageController(model, pageDef)\n break\n\n case ControllerType.Status:\n controller = new PageControllers.StatusPageController(model, pageDef)\n break\n\n case ControllerType.FileUpload:\n controller = new PageControllers.FileUploadPageController(model, pageDef)\n break\n\n case ControllerType.Repeat:\n controller = new PageControllers.RepeatPageController(model, pageDef)\n break\n }\n\n if (typeof controller === 'undefined') {\n if (model.controllers?.[pageDef.controller]) {\n const Ctrl = model.controllers[pageDef.controller]\n controller = new Ctrl(model, pageDef) as unknown as PageControllerClass // type assertion needed because TS can't verify custom controller structure\n }\n }\n\n if (typeof controller === 'undefined') {\n throw new Error(`Page controller ${pageDef.controller} does not exist`)\n }\n\n return controller\n}\n"],"mappings":"AAAA,SACEA,cAAc,EACdC,sBAAsB,QAEjB,oBAAoB;AAG3B,OAAO,KAAKC,eAAe;AAM3B;AACA;AACA;AACA,OAAO,SAASC,UAAUA,CAACC,KAAgB,EAAEC,OAAa,EAAE;EAC1D,MAAMC,cAAc,GAAGL,sBAAsB,CAACI,OAAO,CAACE,UAAU,CAAC;EAEjE,IAAI,CAACF,OAAO,CAACE,UAAU,EAAE;IACvB,OAAO,IAAIL,eAAe,CAACM,sBAAsB,CAACJ,KAAK,EAAEC,OAAO,CAAC;EACnE;;EAEA;EACA,IAAIC,cAAc,IAAID,OAAO,CAACE,UAAU,KAAKD,cAAc,EAAE;IAC3DD,OAAO,CAACE,UAAU,GAAGD,cAAc;EACrC;EAEA,IAAIC,UAA2C;EAE/C,QAAQF,OAAO,CAACE,UAAU;IACxB,KAAKP,cAAc,CAACS,KAAK;MACvBF,UAAU,GAAG,IAAIL,eAAe,CAACQ,mBAAmB,CAACN,KAAK,EAAEC,OAAO,CAAC;MACpE;IAEF,KAAKL,cAAc,CAACW,IAAI;MACtBJ,UAAU,GAAG,IAAIL,eAAe,CAACM,sBAAsB,CAACJ,KAAK,EAAEC,OAAO,CAAC;MACvE;IAEF,KAAKL,cAAc,CAACY,QAAQ;MAC1BL,UAAU,GAAG,IAAIL,eAAe,CAACW,sBAAsB,CAACT,KAAK,EAAEC,OAAO,CAAC;MACvE;IAEF,KAAKL,cAAc,CAACc,OAAO;MACzBP,UAAU,GAAG,IAAIL,eAAe,CAACa,qBAAqB,CAACX,KAAK,EAAEC,OAAO,CAAC;MACtE;IAEF,KAAKL,cAAc,CAACgB,MAAM;MACxBT,UAAU,GAAG,IAAIL,eAAe,CAACe,oBAAoB,CAACb,KAAK,EAAEC,OAAO,CAAC;MACrE;IAEF,KAAKL,cAAc,CAACkB,UAAU;MAC5BX,UAAU,GAAG,IAAIL,eAAe,CAACiB,wBAAwB,CAACf,KAAK,EAAEC,OAAO,CAAC;MACzE;IAEF,KAAKL,cAAc,CAACoB,MAAM;MACxBb,UAAU,GAAG,IAAIL,eAAe,CAACmB,oBAAoB,CAACjB,KAAK,EAAEC,OAAO,CAAC;MACrE;EACJ;EAEA,IAAI,OAAOE,UAAU,KAAK,WAAW,EAAE;IACrC,IAAIH,KAAK,CAACkB,WAAW,GAAGjB,OAAO,CAACE,UAAU,CAAC,EAAE;MAC3C,MAAMgB,IAAI,GAAGnB,KAAK,CAACkB,WAAW,CAACjB,OAAO,CAACE,UAAU,CAAC;MAClDA,UAAU,GAAG,IAAIgB,IAAI,CAACnB,KAAK,EAAEC,OAAO,CAAmC,EAAC;IAC1E;EACF;EAEA,IAAI,OAAOE,UAAU,KAAK,WAAW,EAAE;IACrC,MAAM,IAAIiB,KAAK,CAAC,mBAAmBnB,OAAO,CAACE,UAAU,iBAAiB,CAAC;EACzE;EAEA,OAAOA,UAAU;AACnB","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@defra/forms-engine-plugin",
3
- "version": "4.0.10",
3
+ "version": "4.0.11",
4
4
  "description": "Defra forms engine",
5
5
  "type": "module",
6
6
  "files": [
@@ -11,7 +11,6 @@ import { PageController } from '~/src/server/plugins/engine/pageControllers/Page
11
11
  import { getProxyUrlForLocalDevelopment } from '~/src/server/plugins/engine/pageControllers/helpers/index.js'
12
12
  import {
13
13
  createPage,
14
- isPageController,
15
14
  type PageControllerType
16
15
  } from '~/src/server/plugins/engine/pageControllers/helpers/pages.js'
17
16
  import {
@@ -26,7 +25,10 @@ import {
26
25
  import definition from '~/test/form/definitions/blank.js'
27
26
 
28
27
  describe('Page controller helpers', () => {
29
- const examples = PageTypes.map((pageType) => {
28
+ const examples = PageTypes.filter(
29
+ (pageType) =>
30
+ pageType.controller !== ControllerType.SummaryWithConfirmationEmail
31
+ ).map((pageType) => {
30
32
  const pageDef = structuredClone(pageType)
31
33
 
32
34
  let controller: PageControllerType | undefined
@@ -67,10 +69,6 @@ describe('Page controller helpers', () => {
67
69
  controller = SummaryPageController
68
70
  break
69
71
 
70
- case ControllerType.SummaryWithConfirmationEmail:
71
- controller = SummaryPageController
72
- break
73
-
74
72
  case ControllerType.Status:
75
73
  controller = StatusPageController
76
74
  break
@@ -155,24 +153,6 @@ describe('Page controller helpers', () => {
155
153
  })
156
154
  })
157
155
 
158
- describe('Helper: isPageController', () => {
159
- it.each([...examples])(
160
- "allows valid page controller '$pageDef.controller'",
161
- ({ pageDef }) => {
162
- expect(isPageController(pageDef.controller)).toBe(true)
163
- }
164
- )
165
-
166
- it.each([
167
- { name: './pages/unknown.js' },
168
- { name: 'UnknownPageController' },
169
- { name: undefined },
170
- { name: '' }
171
- ])("rejects invalid page controller '$name'", ({ name }) => {
172
- expect(isPageController(name)).toBe(false)
173
- })
174
- })
175
-
176
156
  describe('Helper: getProxyUrlForLocalDevelopment', () => {
177
157
  it('returns null if uploadUrl is undefined', () => {
178
158
  expect(getProxyUrlForLocalDevelopment(undefined)).toBeNull()
@@ -1,23 +1,12 @@
1
1
  import {
2
2
  ControllerType,
3
3
  controllerNameFromPath,
4
- isControllerName,
5
4
  type Page
6
5
  } from '@defra/forms-model'
7
6
 
8
7
  import { type FormModel } from '~/src/server/plugins/engine/models/index.js'
9
8
  import * as PageControllers from '~/src/server/plugins/engine/pageControllers/index.js'
10
9
 
11
- export function isPageController(
12
- controllerName?: string | ControllerType
13
- ): controllerName is keyof typeof PageControllers {
14
- // Handle SummaryWithConfirmationEmail as it uses SummaryPageController
15
- if (controllerName === ControllerType.SummaryWithConfirmationEmail) {
16
- return true
17
- }
18
- return isControllerName(controllerName) && controllerName in PageControllers
19
- }
20
-
21
10
  export type PageControllerClass = InstanceType<PageControllerType>
22
11
  export type PageControllerType =
23
12
  (typeof PageControllers)[keyof typeof PageControllers]
@@ -56,10 +45,6 @@ export function createPage(model: FormModel, pageDef: Page) {
56
45
  controller = new PageControllers.SummaryPageController(model, pageDef)
57
46
  break
58
47
 
59
- case ControllerType.SummaryWithConfirmationEmail:
60
- controller = new PageControllers.SummaryPageController(model, pageDef)
61
- break
62
-
63
48
  case ControllerType.Status:
64
49
  controller = new PageControllers.StatusPageController(model, pageDef)
65
50
  break