@defra/forms-engine-plugin 0.0.3 → 0.0.4

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 (328) hide show
  1. package/.public/assets/fonts/bold-affa96571d-v2.woff +0 -0
  2. package/.public/assets/fonts/bold-b542beb274-v2.woff2 +0 -0
  3. package/.public/assets/fonts/light-94a07e06a1-v2.woff2 +0 -0
  4. package/.public/assets/fonts/light-f591b13f7d-v2.woff +0 -0
  5. package/.public/assets/images/favicon.ico +0 -0
  6. package/.public/assets/images/favicon.svg +1 -0
  7. package/.public/assets/images/govuk-crest.svg +1 -0
  8. package/.public/assets/images/govuk-icon-180.png +0 -0
  9. package/.public/assets/images/govuk-icon-192.png +0 -0
  10. package/.public/assets/images/govuk-icon-512.png +0 -0
  11. package/.public/assets/images/govuk-icon-mask.svg +1 -0
  12. package/.public/assets/images/govuk-opengraph-image.png +0 -0
  13. package/.public/assets/manifest.json +39 -0
  14. package/.public/assets-manifest.json +24 -0
  15. package/.public/javascripts/application.0fd8c18.min.js +3 -0
  16. package/.public/javascripts/application.0fd8c18.min.js.LICENSE.txt +58 -0
  17. package/.public/javascripts/application.0fd8c18.min.js.map +1 -0
  18. package/.public/javascripts/file-upload.b2f18f5.min.js +2 -0
  19. package/.public/javascripts/file-upload.b2f18f5.min.js.map +1 -0
  20. package/.public/javascripts/vendor/accessible-autocomplete.275d332.min.js +2 -0
  21. package/.public/javascripts/vendor/accessible-autocomplete.275d332.min.js.map +1 -0
  22. package/.public/stylesheets/application.e340021.min.css +14 -0
  23. package/.public/stylesheets/application.e340021.min.css.map +1 -0
  24. package/package.json +6 -2
  25. package/.browserslistrc +0 -16
  26. package/.editorconfig +0 -9
  27. package/.eslintrc.cjs +0 -266
  28. package/.github/dependabot.yml +0 -85
  29. package/.github/workflows/check-pull-request.yml +0 -209
  30. package/.github/workflows/pr-notifier.yml +0 -98
  31. package/.github/workflows/publish.yml +0 -111
  32. package/.husky/pre-commit +0 -1
  33. package/.lintstagedrc.js +0 -4
  34. package/.nvmrc +0 -1
  35. package/.prettierignore +0 -8
  36. package/.prettierrc.cjs +0 -26
  37. package/Dockerfile +0 -61
  38. package/Procfile +0 -1
  39. package/babel.config.cjs +0 -55
  40. package/compose/aws.env +0 -4
  41. package/compose/start-localstack.sh +0 -26
  42. package/docker-compose.yaml +0 -86
  43. package/globals.d.ts +0 -1
  44. package/jest.config.cjs +0 -54
  45. package/jest.environment.js +0 -4
  46. package/jest.setup.cjs +0 -14
  47. package/postcss.config.js +0 -26
  48. package/sonar-project.properties +0 -17
  49. package/src/client/javascripts/application.js +0 -87
  50. package/src/client/javascripts/file-upload.js +0 -386
  51. package/src/client/stylesheets/_code.scss +0 -33
  52. package/src/client/stylesheets/_govuk-frontend.scss +0 -4
  53. package/src/client/stylesheets/_prose.scss +0 -56
  54. package/src/client/stylesheets/_service-banner.scss +0 -24
  55. package/src/client/stylesheets/_summary-list.scss +0 -28
  56. package/src/client/stylesheets/_tag-env.scss +0 -24
  57. package/src/client/stylesheets/application.scss +0 -14
  58. package/src/common/cookies.js +0 -58
  59. package/src/common/cookies.test.js +0 -23
  60. package/src/common/types.js +0 -5
  61. package/src/config/index.ts +0 -271
  62. package/src/index.ts +0 -31
  63. package/src/server/common/helpers/logging/logger-options.test.ts +0 -50
  64. package/src/server/common/helpers/logging/logger-options.ts +0 -46
  65. package/src/server/common/helpers/logging/logger.ts +0 -7
  66. package/src/server/common/helpers/logging/request-logger.ts +0 -9
  67. package/src/server/common/helpers/logging/request-tracing.js +0 -10
  68. package/src/server/common/helpers/redis-client.js +0 -70
  69. package/src/server/constants.js +0 -1
  70. package/src/server/forms/README.md +0 -10
  71. package/src/server/forms/components.json +0 -1015
  72. package/src/server/forms/report-a-terrorist.json +0 -270
  73. package/src/server/forms/runner-components-test.json +0 -365
  74. package/src/server/forms/test.json +0 -581
  75. package/src/server/index.test.ts +0 -582
  76. package/src/server/index.ts +0 -140
  77. package/src/server/plugins/blankie.test.ts +0 -73
  78. package/src/server/plugins/blankie.ts +0 -48
  79. package/src/server/plugins/crumb.ts +0 -20
  80. package/src/server/plugins/engine/README.md +0 -87
  81. package/src/server/plugins/engine/components/AutocompleteField.test.ts +0 -294
  82. package/src/server/plugins/engine/components/AutocompleteField.ts +0 -49
  83. package/src/server/plugins/engine/components/CheckboxesField.test.ts +0 -379
  84. package/src/server/plugins/engine/components/CheckboxesField.ts +0 -106
  85. package/src/server/plugins/engine/components/ComponentBase.ts +0 -97
  86. package/src/server/plugins/engine/components/ComponentCollection.ts +0 -278
  87. package/src/server/plugins/engine/components/DatePartsField.test.ts +0 -822
  88. package/src/server/plugins/engine/components/DatePartsField.ts +0 -264
  89. package/src/server/plugins/engine/components/Details.test.ts +0 -49
  90. package/src/server/plugins/engine/components/Details.ts +0 -30
  91. package/src/server/plugins/engine/components/EmailAddressField.test.ts +0 -395
  92. package/src/server/plugins/engine/components/EmailAddressField.ts +0 -55
  93. package/src/server/plugins/engine/components/FileUploadField.test.ts +0 -778
  94. package/src/server/plugins/engine/components/FileUploadField.ts +0 -262
  95. package/src/server/plugins/engine/components/FormComponent.ts +0 -249
  96. package/src/server/plugins/engine/components/Html.test.ts +0 -48
  97. package/src/server/plugins/engine/components/Html.ts +0 -29
  98. package/src/server/plugins/engine/components/InsetText.test.ts +0 -48
  99. package/src/server/plugins/engine/components/InsetText.ts +0 -27
  100. package/src/server/plugins/engine/components/List.test.ts +0 -76
  101. package/src/server/plugins/engine/components/List.ts +0 -72
  102. package/src/server/plugins/engine/components/ListFormComponent.ts +0 -140
  103. package/src/server/plugins/engine/components/MonthYearField.test.ts +0 -567
  104. package/src/server/plugins/engine/components/MonthYearField.ts +0 -222
  105. package/src/server/plugins/engine/components/MultilineTextField.test.ts +0 -558
  106. package/src/server/plugins/engine/components/MultilineTextField.ts +0 -138
  107. package/src/server/plugins/engine/components/NumberField.test.ts +0 -701
  108. package/src/server/plugins/engine/components/NumberField.ts +0 -163
  109. package/src/server/plugins/engine/components/RadiosField.test.ts +0 -288
  110. package/src/server/plugins/engine/components/RadiosField.ts +0 -24
  111. package/src/server/plugins/engine/components/SelectField.test.ts +0 -288
  112. package/src/server/plugins/engine/components/SelectField.ts +0 -47
  113. package/src/server/plugins/engine/components/SelectionControlField.ts +0 -43
  114. package/src/server/plugins/engine/components/TelephoneNumberField.test.ts +0 -356
  115. package/src/server/plugins/engine/components/TelephoneNumberField.ts +0 -67
  116. package/src/server/plugins/engine/components/TextField.test.ts +0 -489
  117. package/src/server/plugins/engine/components/TextField.ts +0 -96
  118. package/src/server/plugins/engine/components/UkAddressField.test.ts +0 -623
  119. package/src/server/plugins/engine/components/UkAddressField.ts +0 -172
  120. package/src/server/plugins/engine/components/YesNoField.test.ts +0 -248
  121. package/src/server/plugins/engine/components/YesNoField.ts +0 -31
  122. package/src/server/plugins/engine/components/constants.ts +0 -1
  123. package/src/server/plugins/engine/components/helpers.ts +0 -330
  124. package/src/server/plugins/engine/components/index.ts +0 -24
  125. package/src/server/plugins/engine/components/types.ts +0 -117
  126. package/src/server/plugins/engine/configureEnginePlugin.ts +0 -47
  127. package/src/server/plugins/engine/helpers.test.ts +0 -791
  128. package/src/server/plugins/engine/helpers.ts +0 -379
  129. package/src/server/plugins/engine/index.ts +0 -7
  130. package/src/server/plugins/engine/models/FormModel.test.ts +0 -42
  131. package/src/server/plugins/engine/models/FormModel.ts +0 -443
  132. package/src/server/plugins/engine/models/RepeatingSummaryViewModel.ts +0 -0
  133. package/src/server/plugins/engine/models/Section.ts +0 -0
  134. package/src/server/plugins/engine/models/SummaryViewModel.test.ts +0 -209
  135. package/src/server/plugins/engine/models/SummaryViewModel.ts +0 -220
  136. package/src/server/plugins/engine/models/index.ts +0 -2
  137. package/src/server/plugins/engine/models/types.ts +0 -114
  138. package/src/server/plugins/engine/outputFormatters/human/v1.test.ts +0 -143
  139. package/src/server/plugins/engine/outputFormatters/human/v1.ts +0 -73
  140. package/src/server/plugins/engine/outputFormatters/index.test.ts +0 -17
  141. package/src/server/plugins/engine/outputFormatters/index.ts +0 -44
  142. package/src/server/plugins/engine/outputFormatters/machine/v1.test.ts +0 -229
  143. package/src/server/plugins/engine/outputFormatters/machine/v1.ts +0 -140
  144. package/src/server/plugins/engine/outputFormatters/machine/v2.test.ts +0 -229
  145. package/src/server/plugins/engine/outputFormatters/machine/v2.ts +0 -153
  146. package/src/server/plugins/engine/pageControllers/FileUploadPageController.test.ts +0 -1108
  147. package/src/server/plugins/engine/pageControllers/FileUploadPageController.ts +0 -446
  148. package/src/server/plugins/engine/pageControllers/PageController.test.ts +0 -205
  149. package/src/server/plugins/engine/pageControllers/PageController.ts +0 -176
  150. package/src/server/plugins/engine/pageControllers/QuestionPageController.test.ts +0 -1264
  151. package/src/server/plugins/engine/pageControllers/QuestionPageController.ts +0 -561
  152. package/src/server/plugins/engine/pageControllers/README.md +0 -28
  153. package/src/server/plugins/engine/pageControllers/RepeatPageController.test.ts +0 -264
  154. package/src/server/plugins/engine/pageControllers/RepeatPageController.ts +0 -458
  155. package/src/server/plugins/engine/pageControllers/StartPageController.ts +0 -18
  156. package/src/server/plugins/engine/pageControllers/StatusPageController.ts +0 -50
  157. package/src/server/plugins/engine/pageControllers/SummaryPageController.ts +0 -261
  158. package/src/server/plugins/engine/pageControllers/TerminalController.test.ts +0 -28
  159. package/src/server/plugins/engine/pageControllers/TerminalPageController.ts +0 -19
  160. package/src/server/plugins/engine/pageControllers/helpers.test.ts +0 -198
  161. package/src/server/plugins/engine/pageControllers/helpers.ts +0 -101
  162. package/src/server/plugins/engine/pageControllers/index.ts +0 -10
  163. package/src/server/plugins/engine/pageControllers/validationOptions.ts +0 -89
  164. package/src/server/plugins/engine/plugin.ts +0 -673
  165. package/src/server/plugins/engine/services/formSubmissionService.js +0 -46
  166. package/src/server/plugins/engine/services/formsService.js +0 -46
  167. package/src/server/plugins/engine/services/formsService.test.js +0 -90
  168. package/src/server/plugins/engine/services/index.js +0 -3
  169. package/src/server/plugins/engine/services/notifyService.test.ts +0 -132
  170. package/src/server/plugins/engine/services/notifyService.ts +0 -64
  171. package/src/server/plugins/engine/services/uploadService.js +0 -60
  172. package/src/server/plugins/engine/types.ts +0 -315
  173. package/src/server/plugins/engine/views/components/autocompletefield.html +0 -5
  174. package/src/server/plugins/engine/views/components/checkboxesfield.html +0 -5
  175. package/src/server/plugins/engine/views/components/datepartsfield.html +0 -5
  176. package/src/server/plugins/engine/views/components/details.html +0 -6
  177. package/src/server/plugins/engine/views/components/emailaddressfield.html +0 -5
  178. package/src/server/plugins/engine/views/components/fileuploadfield-key.html +0 -8
  179. package/src/server/plugins/engine/views/components/fileuploadfield-value.html +0 -3
  180. package/src/server/plugins/engine/views/components/fileuploadfield.html +0 -24
  181. package/src/server/plugins/engine/views/components/html.html +0 -3
  182. package/src/server/plugins/engine/views/components/insettext.html +0 -7
  183. package/src/server/plugins/engine/views/components/list.html +0 -36
  184. package/src/server/plugins/engine/views/components/monthyearfield.html +0 -5
  185. package/src/server/plugins/engine/views/components/multilinetextfield.html +0 -10
  186. package/src/server/plugins/engine/views/components/numberfield.html +0 -5
  187. package/src/server/plugins/engine/views/components/radiosfield.html +0 -5
  188. package/src/server/plugins/engine/views/components/selectfield.html +0 -5
  189. package/src/server/plugins/engine/views/components/telephonenumberfield.html +0 -5
  190. package/src/server/plugins/engine/views/components/textfield.html +0 -5
  191. package/src/server/plugins/engine/views/components/ukaddressfield.html +0 -25
  192. package/src/server/plugins/engine/views/components/yesnofield.html +0 -5
  193. package/src/server/plugins/engine/views/file-upload.html +0 -45
  194. package/src/server/plugins/engine/views/index.html +0 -39
  195. package/src/server/plugins/engine/views/item-delete.html +0 -56
  196. package/src/server/plugins/engine/views/partials/components.html +0 -6
  197. package/src/server/plugins/engine/views/partials/conditional-components.html +0 -3
  198. package/src/server/plugins/engine/views/partials/debug.html +0 -44
  199. package/src/server/plugins/engine/views/partials/form.html +0 -15
  200. package/src/server/plugins/engine/views/partials/heading.html +0 -16
  201. package/src/server/plugins/engine/views/partials/preview-banner.html +0 -32
  202. package/src/server/plugins/engine/views/partials/preview-banner.test.js +0 -122
  203. package/src/server/plugins/engine/views/partials/warn-missing-notification-email.html +0 -10
  204. package/src/server/plugins/engine/views/repeat-list-summary.html +0 -53
  205. package/src/server/plugins/errorPages.ts +0 -58
  206. package/src/server/plugins/nunjucks/context.js +0 -88
  207. package/src/server/plugins/nunjucks/context.test.js +0 -142
  208. package/src/server/plugins/nunjucks/enviroment.test.js +0 -201
  209. package/src/server/plugins/nunjucks/environment.js +0 -116
  210. package/src/server/plugins/nunjucks/filters/answer.js +0 -27
  211. package/src/server/plugins/nunjucks/filters/answer.test.js +0 -89
  212. package/src/server/plugins/nunjucks/filters/evaluate.js +0 -21
  213. package/src/server/plugins/nunjucks/filters/field.js +0 -28
  214. package/src/server/plugins/nunjucks/filters/field.test.js +0 -75
  215. package/src/server/plugins/nunjucks/filters/highlight.js +0 -11
  216. package/src/server/plugins/nunjucks/filters/href.js +0 -30
  217. package/src/server/plugins/nunjucks/filters/href.test.js +0 -80
  218. package/src/server/plugins/nunjucks/filters/index.js +0 -8
  219. package/src/server/plugins/nunjucks/filters/inspect.js +0 -15
  220. package/src/server/plugins/nunjucks/filters/page.js +0 -24
  221. package/src/server/plugins/nunjucks/filters/page.test.js +0 -65
  222. package/src/server/plugins/nunjucks/index.js +0 -3
  223. package/src/server/plugins/nunjucks/plugin.js +0 -40
  224. package/src/server/plugins/nunjucks/render.js +0 -42
  225. package/src/server/plugins/nunjucks/types.js +0 -40
  226. package/src/server/plugins/pulse.ts +0 -11
  227. package/src/server/plugins/router.ts +0 -201
  228. package/src/server/plugins/session.ts +0 -28
  229. package/src/server/routes/health.js +0 -13
  230. package/src/server/routes/health.test.js +0 -35
  231. package/src/server/routes/index.test.ts +0 -125
  232. package/src/server/routes/index.ts +0 -2
  233. package/src/server/routes/public.ts +0 -47
  234. package/src/server/routes/types.ts +0 -48
  235. package/src/server/schemas/index.ts +0 -34
  236. package/src/server/secure-context.js +0 -43
  237. package/src/server/services/cacheService.test.ts +0 -276
  238. package/src/server/services/cacheService.ts +0 -131
  239. package/src/server/services/httpService.test.js +0 -491
  240. package/src/server/services/httpService.ts +0 -50
  241. package/src/server/services/index.ts +0 -1
  242. package/src/server/types.ts +0 -54
  243. package/src/server/utils/notify.test.ts +0 -37
  244. package/src/server/utils/notify.ts +0 -50
  245. package/src/server/utils/secure-context/get-trust-store-certs.js +0 -11
  246. package/src/server/utils/secure-context/get-trust-store-certs.test.js +0 -19
  247. package/src/server/utils/utils.js +0 -24
  248. package/src/server/utils/utils.test.js +0 -54
  249. package/src/server/views/404.html +0 -16
  250. package/src/server/views/500.html +0 -19
  251. package/src/server/views/components/debug/macro.njk +0 -3
  252. package/src/server/views/components/debug/template.njk +0 -13
  253. package/src/server/views/components/service-banner/macro.njk +0 -3
  254. package/src/server/views/components/service-banner/template.njk +0 -20
  255. package/src/server/views/components/service-banner/template.test.js +0 -43
  256. package/src/server/views/components/tag-env/macro.njk +0 -3
  257. package/src/server/views/components/tag-env/template.njk +0 -30
  258. package/src/server/views/components/tag-env/template.test.js +0 -66
  259. package/src/server/views/confirmation.html +0 -19
  260. package/src/server/views/help/accessibility-statement.html +0 -58
  261. package/src/server/views/help/cookie-preferences.html +0 -57
  262. package/src/server/views/help/cookies.html +0 -71
  263. package/src/server/views/help/get-support.html +0 -37
  264. package/src/server/views/help/privacy-notice.html +0 -68
  265. package/src/server/views/help/terms-and-conditions.html +0 -83
  266. package/src/server/views/layout.html +0 -199
  267. package/src/server/views/summary.html +0 -50
  268. package/src/typings/hapi/index.d.ts +0 -95
  269. package/src/typings/hapi-tracing/index.d.ts +0 -6
  270. package/src/typings/index.d.ts +0 -3
  271. package/src/typings/joi/index.d.ts +0 -22
  272. package/stylelint.config.js +0 -10
  273. package/test/client/javascripts/file-upload.test.js +0 -1197
  274. package/test/condition/checkboxes.test.js +0 -112
  275. package/test/condition/radios.test.js +0 -112
  276. package/test/condition/text.test.js +0 -103
  277. package/test/fixtures/assets-manifest.json +0 -4
  278. package/test/fixtures/form.js +0 -86
  279. package/test/fixtures/index.js +0 -2
  280. package/test/fixtures/list.js +0 -92
  281. package/test/form/cookies.test.js +0 -338
  282. package/test/form/csrf.test.js +0 -87
  283. package/test/form/definitions/basic.js +0 -101
  284. package/test/form/definitions/blank.js +0 -10
  285. package/test/form/definitions/checkboxes.json +0 -88
  286. package/test/form/definitions/components.json +0 -452
  287. package/test/form/definitions/conditional-reveal.js +0 -140
  288. package/test/form/definitions/conditions-basic.js +0 -187
  289. package/test/form/definitions/conditions-complex.js +0 -338
  290. package/test/form/definitions/conditions-dates.js +0 -78
  291. package/test/form/definitions/conditions-escaping.js +0 -143
  292. package/test/form/definitions/demo-cph-number.js +0 -3099
  293. package/test/form/definitions/feedback.json +0 -45
  294. package/test/form/definitions/fields-optional.js +0 -402
  295. package/test/form/definitions/fields-required.js +0 -402
  296. package/test/form/definitions/file-upload-basic.js +0 -44
  297. package/test/form/definitions/file-upload.js +0 -66
  298. package/test/form/definitions/minimal.js +0 -39
  299. package/test/form/definitions/phase-alpha.json +0 -33
  300. package/test/form/definitions/phase-default.json +0 -26
  301. package/test/form/definitions/radios.json +0 -88
  302. package/test/form/definitions/repeat-mixed.js +0 -54
  303. package/test/form/definitions/repeat.js +0 -70
  304. package/test/form/definitions/status.json +0 -126
  305. package/test/form/definitions/templates.js +0 -183
  306. package/test/form/definitions/test.json +0 -581
  307. package/test/form/definitions/text.json +0 -75
  308. package/test/form/definitions/titles.json +0 -170
  309. package/test/form/definitions.test.js +0 -47
  310. package/test/form/exit-page.test.js +0 -210
  311. package/test/form/feedback.test.js +0 -68
  312. package/test/form/fields-optional.test.js +0 -237
  313. package/test/form/fields-required.test.js +0 -294
  314. package/test/form/file-upload.test.js +0 -313
  315. package/test/form/govuk-notify.test.js +0 -449
  316. package/test/form/journey-basic.test.js +0 -444
  317. package/test/form/persist-files.test.js +0 -227
  318. package/test/form/phase-banner.test.js +0 -71
  319. package/test/form/repeat.test.js +0 -628
  320. package/test/form/summary-submission-email.test.js +0 -95
  321. package/test/form/template.test.js +0 -288
  322. package/test/form/titles.test.js +0 -204
  323. package/test/helpers/component-helpers.js +0 -74
  324. package/test/utils/get-cookie.js +0 -42
  325. package/test/utils/get-form-definitions.js +0 -18
  326. package/tmp.pdf +0 -1
  327. package/tsconfig.json +0 -28
  328. package/webpack.config.js +0 -208
package/package.json CHANGED
@@ -1,9 +1,13 @@
1
1
  {
2
2
  "name": "@defra/forms-engine-plugin",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "description": "Defra forms engine",
5
5
  "type": "module",
6
6
  "main": ".server/server/plugins/engine/index.js",
7
+ "files": [
8
+ ".server",
9
+ ".public"
10
+ ],
7
11
  "scripts": {
8
12
  "build": "npm run build:server && npm run build:client",
9
13
  "build:client": "NODE_ENV=${NODE_ENV:-production} webpack",
@@ -78,6 +82,7 @@
78
82
  "lodash": "^4.17.21",
79
83
  "marked": "^15.0.6",
80
84
  "nunjucks": "^3.2.3",
85
+ "outdent": "^0.8.0",
81
86
  "pino": "^9.6.0",
82
87
  "pino-pretty": "^13.0.0",
83
88
  "proxy-agent": "^6.5.0",
@@ -142,7 +147,6 @@
142
147
  "jest-extended": "^4.0.2",
143
148
  "jsdom": "^25.0.1",
144
149
  "lint-staged": "^15.3.0",
145
- "outdent": "^0.8.0",
146
150
  "postcss": "^8.4.49",
147
151
  "postcss-load-config": "^6.0.1",
148
152
  "postcss-loader": "^8.1.1",
package/.browserslistrc DELETED
@@ -1,16 +0,0 @@
1
- [javascripts]
2
- supports es6-module
3
-
4
- [stylesheets]
5
- > 0.1% in GB and not dead
6
- last 6 Chrome versions
7
- last 6 Firefox versions
8
- last 6 Edge versions
9
- last 2 Samsung versions
10
- Firefox ESR
11
- Safari >= 11
12
- iOS >= 11
13
- ie 11
14
-
15
- [node]
16
- node 22
package/.editorconfig DELETED
@@ -1,9 +0,0 @@
1
- root = true
2
-
3
- [*]
4
- charset = utf-8
5
- indent_style = space
6
- indent_size = 2
7
- end_of_line = lf
8
- insert_final_newline = true
9
- trim_trailing_whitespace = true
package/.eslintrc.cjs DELETED
@@ -1,266 +0,0 @@
1
- /**
2
- * ESLint config
3
- * @type {import('eslint').ESLint.ConfigData}
4
- */
5
- module.exports = {
6
- ignorePatterns: ['.public', '.server', 'coverage'],
7
- overrides: [
8
- {
9
- extends: [
10
- 'standard',
11
- 'eslint:recommended',
12
- 'plugin:import/recommended',
13
- 'plugin:import/typescript',
14
- 'plugin:jsdoc/recommended',
15
- 'plugin:n/recommended',
16
- 'plugin:promise/recommended',
17
- 'plugin:@typescript-eslint/strict-type-checked',
18
- 'plugin:@typescript-eslint/stylistic-type-checked',
19
- 'prettier'
20
- ],
21
- files: ['**/*.{cjs,js,mjs,ts}'],
22
- parser: '@typescript-eslint/parser',
23
- parserOptions: {
24
- ecmaVersion: 'latest',
25
- projectService: true,
26
- tsconfigRootDir: __dirname
27
- },
28
- plugins: ['@typescript-eslint', 'import', 'jsdoc', 'n', 'promise'],
29
- rules: {
30
- 'no-console': 'error',
31
- 'no-irregular-whitespace': [
32
- 'error',
33
- {
34
- skipTemplates: true
35
- }
36
- ],
37
-
38
- // Check type imports are identified
39
- '@typescript-eslint/consistent-type-imports': [
40
- 'error',
41
- {
42
- fixStyle: 'inline-type-imports'
43
- }
44
- ],
45
-
46
- // Allow void return shorthand in arrow functions
47
- '@typescript-eslint/no-confusing-void-expression': [
48
- 'error',
49
- {
50
- ignoreArrowShorthand: true
51
- }
52
- ],
53
-
54
- // Only show warnings for missing types
55
- '@typescript-eslint/no-unsafe-argument': 'warn',
56
- '@typescript-eslint/no-unsafe-assignment': 'warn',
57
- '@typescript-eslint/no-unsafe-call': 'warn',
58
- '@typescript-eslint/no-unsafe-member-access': 'warn',
59
- '@typescript-eslint/no-unsafe-return': 'warn',
60
-
61
- // Check type support for template string implicit `.toString()`
62
- '@typescript-eslint/restrict-template-expressions': [
63
- 'error',
64
- {
65
- allowBoolean: true,
66
- allowNumber: true
67
- }
68
- ],
69
-
70
- // Skip warnings for `this` in static methods
71
- '@typescript-eslint/unbound-method': [
72
- 'warn',
73
- {
74
- ignoreStatic: true
75
- }
76
- ],
77
-
78
- // Skip rules handled by TypeScript compiler
79
- 'import/default': 'off',
80
- 'import/extensions': 'off',
81
- 'import/named': 'off',
82
- 'import/namespace': 'off',
83
- 'import/no-named-as-default': 'off',
84
- 'import/no-named-as-default-member': 'off',
85
- 'import/no-unresolved': 'off',
86
-
87
- // Check type imports are annotated inline
88
- 'import/consistent-type-specifier-style': ['error', 'prefer-inline'],
89
-
90
- // Check import or require statements are A-Z ordered
91
- 'import/order': [
92
- 'error',
93
- {
94
- alphabetize: { order: 'asc' },
95
- named: {
96
- enabled: true,
97
- types: 'types-last'
98
- },
99
- 'newlines-between': 'always'
100
- }
101
- ],
102
-
103
- // Check relative import paths use aliases
104
- 'no-restricted-imports': [
105
- 'error',
106
- {
107
- patterns: [
108
- {
109
- group: ['./', '../'],
110
- message: "Please use '~/*' import alias instead."
111
- }
112
- ]
113
- }
114
- ],
115
-
116
- // Check for valid formatting
117
- 'jsdoc/check-line-alignment': [
118
- 'warn',
119
- 'never',
120
- {
121
- tags: ['param', 'property', 'typedef', 'returns']
122
- }
123
- ],
124
-
125
- // Require hyphens before param description
126
- // Aligns with TSDoc style: https://tsdoc.org/pages/tags/param/
127
- 'jsdoc/require-hyphen-before-param-description': [
128
- 'warn',
129
- 'always',
130
- {
131
- tags: {
132
- param: 'always',
133
- property: 'always',
134
- returns: 'never'
135
- }
136
- }
137
- ],
138
-
139
- // JSDoc blocks are optional but must be valid
140
- 'jsdoc/require-jsdoc': [
141
- 'error',
142
- {
143
- enableFixer: false,
144
- require: {
145
- FunctionDeclaration: false
146
- }
147
- }
148
- ],
149
-
150
- // JSDoc @param is optional
151
- 'jsdoc/require-param-description': 'off',
152
- 'jsdoc/require-param-type': 'off',
153
- 'jsdoc/require-param': 'off',
154
-
155
- // JSDoc @returns is optional
156
- 'jsdoc/require-returns-description': 'off',
157
- 'jsdoc/require-returns-type': 'off',
158
- 'jsdoc/require-returns': 'off',
159
-
160
- // Skip rules handled by TypeScript compiler
161
- 'n/no-extraneous-require': 'off',
162
- 'n/no-extraneous-import': 'off',
163
- 'n/no-missing-require': 'off',
164
- 'n/no-missing-import': 'off',
165
-
166
- // Prefer rules that are type aware
167
- 'no-unused-vars': 'off',
168
- 'no-use-before-define': 'off',
169
- '@typescript-eslint/no-unused-vars': [
170
- 'error',
171
- { argsIgnorePattern: '^_' }
172
- ],
173
- '@typescript-eslint/no-use-before-define': ['error', 'nofunc']
174
- },
175
- settings: {
176
- 'import/parsers': {
177
- '@typescript-eslint/parser': ['.cjs', '.js', '.mjs', '.ts']
178
- },
179
- 'import/resolver': {
180
- node: true,
181
- typescript: true
182
- }
183
- }
184
- },
185
- {
186
- extends: ['plugin:jsdoc/recommended-typescript-flavor'],
187
- files: ['**/*.{cjs,js,mjs}'],
188
- plugins: ['jsdoc'],
189
- rules: {
190
- // Promise.prototype.catch() errors cannot be typed in JavaScript
191
- '@typescript-eslint/use-unknown-in-catch-callback-variable': 'off',
192
-
193
- // JSDoc blocks are optional but must be valid
194
- 'jsdoc/require-jsdoc': [
195
- 'error',
196
- {
197
- enableFixer: false,
198
- require: {
199
- FunctionDeclaration: false
200
- }
201
- }
202
- ],
203
-
204
- // JSDoc @param types are mandatory for JavaScript
205
- 'jsdoc/require-param-description': 'off',
206
- 'jsdoc/require-param-type': 'error',
207
- 'jsdoc/require-param': 'off',
208
-
209
- // JSDoc @returns is optional
210
- 'jsdoc/require-returns-description': 'off',
211
- 'jsdoc/require-returns-type': 'off',
212
- 'jsdoc/require-returns': 'off'
213
- }
214
- },
215
- {
216
- files: ['**/*.cjs'],
217
- rules: {
218
- '@typescript-eslint/no-var-requires': 'off'
219
- }
220
- },
221
- {
222
- files: ['**/*.{js,mjs}'],
223
- parserOptions: {
224
- sourceType: 'module'
225
- }
226
- },
227
- {
228
- env: {
229
- browser: true,
230
- node: false
231
- },
232
- files: ['src/client/**/*.js'],
233
- rules: {
234
- // Turn off warnings for unavailable types
235
- // https://github.com/alphagov/govuk-frontend/issues/2835
236
- '@typescript-eslint/no-unsafe-argument': 'off',
237
- '@typescript-eslint/no-unsafe-assignment': 'off',
238
- '@typescript-eslint/no-unsafe-call': 'off',
239
- '@typescript-eslint/no-unsafe-member-access': 'off',
240
- '@typescript-eslint/no-unsafe-return': 'off',
241
-
242
- // Allow floating promises for lazy loading
243
- '@typescript-eslint/no-floating-promises': 'off',
244
- 'promise/always-return': 'off'
245
- }
246
- },
247
- {
248
- env: {
249
- 'jest/globals': true
250
- },
251
- extends: ['plugin:jest/recommended', 'plugin:jest/style'],
252
- files: ['**/*.test.{cjs,js,mjs,ts}'],
253
- plugins: ['jest'],
254
- rules: {
255
- // Turn off warnings for jest.Expect 'any' types
256
- '@typescript-eslint/no-unsafe-assignment': 'off',
257
- '@typescript-eslint/no-unsafe-argument': 'off',
258
-
259
- // Allow Jest to assert on mocked unbound methods
260
- '@typescript-eslint/unbound-method': 'off',
261
- 'jest/unbound-method': 'error'
262
- }
263
- }
264
- ],
265
- root: true
266
- }
@@ -1,85 +0,0 @@
1
- version: 2
2
-
3
- updates:
4
- # Update npm packages
5
- - package-ecosystem: npm
6
- directory: /
7
- open-pull-requests-limit: 10
8
-
9
- # Group into shared PRs
10
- groups:
11
- build:
12
- patterns:
13
- - '*-loader'
14
- - '*-webpack-plugin'
15
- - '@babel/*'
16
- - 'autoprefixer'
17
- - 'babel-*'
18
- - 'core-js'
19
- - 'cssnano'
20
- - 'cssnano-*'
21
- - 'postcss'
22
- - 'postcss-*'
23
- - 'sass-embedded'
24
- - 'tsc-alias'
25
- - 'typescript'
26
- - 'webpack'
27
- - 'webpack-*'
28
-
29
- # Exclude packages in other groups
30
- exclude-patterns:
31
- - 'postcss-scss'
32
-
33
- lint:
34
- patterns:
35
- - '@typescript-eslint/*'
36
- - 'editorconfig-checker'
37
- - 'eslint'
38
- - 'eslint-*'
39
- - 'husky'
40
- - 'lint-staged'
41
- - 'postcss-scss'
42
- - 'prettier'
43
- - 'stylelint'
44
- - 'stylelint-*'
45
-
46
- logging:
47
- patterns:
48
- - '*-pino'
49
- - '*-pino-format'
50
- - 'pino'
51
- - 'pino-*'
52
-
53
- tools:
54
- patterns:
55
- - 'concurrently'
56
- - 'global-jsdom'
57
- - 'jest'
58
- - 'jsdom'
59
- - 'tsx'
60
-
61
- types:
62
- patterns:
63
- - '@types/*'
64
-
65
- # Schedule run every Monday, local time
66
- schedule:
67
- interval: weekly
68
- time: '10:30'
69
- timezone: 'Europe/London'
70
-
71
- versioning-strategy: increase
72
-
73
- allow:
74
- # Include direct package.json updates
75
- - dependency-type: direct
76
-
77
- # Update GitHub Actions
78
- - package-ecosystem: github-actions
79
- directory: /
80
-
81
- # Schedule run every Monday, local time
82
- schedule:
83
- interval: weekly
84
- time: '10:30'
85
- timezone: 'Europe/London'
@@ -1,209 +0,0 @@
1
- name: Check Pull Request
2
-
3
- on:
4
- pull_request:
5
-
6
- push:
7
- branches:
8
- - main
9
- - 'releases/**'
10
-
11
- workflow_dispatch:
12
-
13
- concurrency:
14
- group: ${{ github.workflow }}-${{ github.ref }}
15
- cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
16
-
17
- jobs:
18
- build:
19
- name: Build
20
- runs-on: ubuntu-24.04
21
-
22
- strategy:
23
- fail-fast: false
24
-
25
- steps:
26
- - name: Check out code
27
- uses: actions/checkout@v4
28
-
29
- - name: Cache dependencies
30
- uses: actions/cache@v4
31
- id: npm-install-cache
32
- with:
33
- enableCrossOsArchive: true
34
- key: npm-install-${{ runner.os }}-${{ hashFiles('package-lock.json') }}
35
- path: node_modules
36
-
37
- - name: Cache build
38
- uses: actions/cache@v4
39
- with:
40
- enableCrossOsArchive: true
41
- key: npm-build-${{ runner.os }}-${{ github.sha }}
42
- path: |
43
- .public
44
- .server
45
-
46
- - name: Setup Node.js
47
- uses: actions/setup-node@v4
48
- with:
49
- node-version-file: .nvmrc
50
-
51
- - name: Install dependencies
52
- if: steps.npm-install-cache.outputs.cache-hit != 'true'
53
- run: npm ci
54
-
55
- - name: Run build
56
- run: npm run build
57
-
58
- lint:
59
- name: ${{ matrix.task.description }}
60
- runs-on: ubuntu-24.04
61
- needs: [build]
62
-
63
- env:
64
- # Authorise GitHub API requests for EditorConfig checker binary
65
- # https://www.npmjs.com/package/editorconfig-checker
66
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
67
-
68
- strategy:
69
- fail-fast: false
70
-
71
- matrix:
72
- task:
73
- - description: Prettier
74
- name: lint-prettier
75
- run: npm run format:check
76
- cache: .cache/prettier
77
-
78
- - description: EditorConfig
79
- name: lint-editorconfig
80
- run: npm run lint:editorconfig
81
-
82
- - description: ESLint
83
- name: lint-js
84
- run: npm run lint:js
85
- cache: .cache/eslint
86
-
87
- - description: Stylelint
88
- run: npm run lint:scss
89
- cache: .cache/stylelint
90
-
91
- - description: TypeScript compiler
92
- name: lint-types
93
- run: npm run lint:types -- --incremental --pretty
94
- cache: '**/*.tsbuildinfo'
95
-
96
- steps:
97
- - name: Checkout
98
- uses: actions/checkout@v4
99
-
100
- - name: Restore dependencies
101
- uses: actions/cache/restore@v4
102
- with:
103
- enableCrossOsArchive: true
104
- fail-on-cache-miss: true
105
- key: npm-install-${{ runner.os }}-${{ hashFiles('package-lock.json') }}
106
- path: node_modules
107
-
108
- - name: Cache task
109
- if: ${{ matrix.task.cache }}
110
- uses: actions/cache@v4
111
- with:
112
- enableCrossOsArchive: true
113
- key: ${{ matrix.task.name }}-${{ runner.os }}
114
- path: ${{ matrix.task.cache }}
115
-
116
- - name: Setup Node.js
117
- uses: actions/setup-node@v4
118
- with:
119
- node-version-file: .nvmrc
120
-
121
- - name: Run lint task
122
- run: ${{ matrix.task.run }}
123
-
124
- tasks:
125
- name: ${{ matrix.task.description }}
126
- runs-on: ubuntu-24.04
127
- needs: [build]
128
-
129
- strategy:
130
- fail-fast: false
131
-
132
- matrix:
133
- task:
134
- - description: Unit tests
135
- name: test-unit
136
- run: npm run test
137
- cache: coverage
138
-
139
- steps:
140
- - name: Checkout
141
- uses: actions/checkout@v4
142
-
143
- - name: Restore dependencies
144
- uses: actions/cache/restore@v4
145
- with:
146
- enableCrossOsArchive: true
147
- fail-on-cache-miss: true
148
- key: npm-install-${{ runner.os }}-${{ hashFiles('package-lock.json') }}
149
- path: node_modules
150
-
151
- - name: Restore build
152
- uses: actions/cache/restore@v4
153
- with:
154
- enableCrossOsArchive: true
155
- fail-on-cache-miss: true
156
- key: npm-build-${{ runner.os }}-${{ github.sha }}
157
- path: |
158
- .public
159
- .server
160
-
161
- - name: Setup Node.js
162
- uses: actions/setup-node@v4
163
- with:
164
- node-version-file: .nvmrc
165
-
166
- - name: Cache task
167
- if: ${{ matrix.task.cache }}
168
- uses: actions/cache@v4
169
- with:
170
- enableCrossOsArchive: true
171
- key: ${{ matrix.task.name }}-${{ runner.os }}-${{ github.sha }}
172
- path: ${{ matrix.task.cache }}
173
-
174
- - name: Run task
175
- run: ${{ matrix.task.run }}
176
-
177
- - name: Save test coverage
178
- if: ${{ always() }}
179
- uses: actions/upload-artifact@v4
180
- with:
181
- name: ${{ matrix.task.description }} coverage
182
- path: coverage
183
- if-no-files-found: ignore
184
-
185
- analysis:
186
- name: Analysis
187
- if: ${{ always() }}
188
- runs-on: ubuntu-24.04
189
- needs: [build, tasks]
190
-
191
- steps:
192
- - name: Check out code
193
- uses: actions/checkout@v4
194
- with:
195
- fetch-depth: 0
196
-
197
- - name: Restore unit test coverage
198
- uses: actions/cache/restore@v4
199
- with:
200
- enableCrossOsArchive: true
201
- fail-on-cache-miss: true
202
- key: test-unit-${{ runner.os }}-${{ github.sha }}
203
- path: coverage
204
-
205
- - name: SonarCloud Scan
206
- uses: SonarSource/sonarqube-scan-action@v4.2.1
207
- env:
208
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
209
- SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}