@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.
- package/.server/server/plugins/engine/pageControllers/helpers/pages.d.ts +1 -2
- package/.server/server/plugins/engine/pageControllers/helpers/pages.js +1 -11
- package/.server/server/plugins/engine/pageControllers/helpers/pages.js.map +1 -1
- package/package.json +1 -1
- package/src/server/plugins/engine/pageControllers/helpers/helpers.test.ts +4 -24
- package/src/server/plugins/engine/pageControllers/helpers/pages.ts +0 -15
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import {
|
|
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
|
|
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","
|
|
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
|
@@ -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.
|
|
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
|