@govuk-one-login/frontend-ui 5.2.1 → 5.3.0

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 (83) hide show
  1. package/build/cjs/backend/__tests__/cookie-banner.test.d.ts +2 -0
  2. package/build/cjs/backend/__tests__/cookie-banner.test.d.ts.map +1 -0
  3. package/build/cjs/backend/__tests__/footer.test.d.ts +2 -0
  4. package/build/cjs/backend/__tests__/footer.test.d.ts.map +1 -0
  5. package/build/cjs/backend/__tests__/header.test.d.ts +2 -0
  6. package/build/cjs/backend/__tests__/header.test.d.ts.map +1 -0
  7. package/build/cjs/backend/__tests__/index.spec.d.ts +2 -0
  8. package/build/cjs/backend/__tests__/index.spec.d.ts.map +1 -0
  9. package/build/cjs/backend/__tests__/language-select.test.d.ts +2 -0
  10. package/build/cjs/backend/__tests__/language-select.test.d.ts.map +1 -0
  11. package/build/cjs/backend/__tests__/logger.spec.d.ts +2 -0
  12. package/build/cjs/backend/__tests__/logger.spec.d.ts.map +1 -0
  13. package/build/cjs/backend/__tests__/mobile-base.test.d.ts +2 -0
  14. package/build/cjs/backend/__tests__/mobile-base.test.d.ts.map +1 -0
  15. package/build/cjs/backend/__tests__/phase-banner.test.d.ts +2 -0
  16. package/build/cjs/backend/__tests__/phase-banner.test.d.ts.map +1 -0
  17. package/build/cjs/backend/__tests__/progress-button.test.d.ts +2 -0
  18. package/build/cjs/backend/__tests__/progress-button.test.d.ts.map +1 -0
  19. package/build/cjs/backend/__tests__/skip-link.test.d.ts +2 -0
  20. package/build/cjs/backend/__tests__/skip-link.test.d.ts.map +1 -0
  21. package/build/cjs/backend/__tests__/spinner.test.d.ts +2 -0
  22. package/build/cjs/backend/__tests__/spinner.test.d.ts.map +1 -0
  23. package/build/cjs/backend/index.cjs +15 -3
  24. package/build/cjs/backend/index.d.cts +45 -0
  25. package/build/cjs/backend/index.d.ts +45 -0
  26. package/build/cjs/backend/index.d.ts.map +1 -0
  27. package/build/cjs/backend/lib/helmet.d.ts +3 -0
  28. package/build/cjs/backend/lib/helmet.d.ts.map +1 -0
  29. package/build/cjs/backend/lib/index.d.ts +4 -0
  30. package/build/cjs/backend/lib/index.d.ts.map +1 -0
  31. package/build/cjs/backend/lib/locals.d.ts +12 -0
  32. package/build/cjs/backend/lib/locals.d.ts.map +1 -0
  33. package/build/cjs/backend/lib/settings.d.ts +26 -0
  34. package/build/cjs/backend/lib/settings.d.ts.map +1 -0
  35. package/build/cjs/backend/test/jest.setup.d.ts +2 -0
  36. package/build/cjs/backend/test/jest.setup.d.ts.map +1 -0
  37. package/build/cjs/backend/test/jestHelper.d.ts +5 -0
  38. package/build/cjs/backend/test/jestHelper.d.ts.map +1 -0
  39. package/build/cjs/backend/utils/logger.d.ts +9 -0
  40. package/build/cjs/backend/utils/logger.d.ts.map +1 -0
  41. package/build/components/bases/identity/identity-base-form.njk +1 -3
  42. package/build/components/bases/identity/identity-base-page.njk +1 -3
  43. package/build/components/bases/identity/v2/identity-base.njk +139 -0
  44. package/build/esm/backend/__tests__/cookie-banner.test.d.ts +2 -0
  45. package/build/esm/backend/__tests__/cookie-banner.test.d.ts.map +1 -0
  46. package/build/esm/backend/__tests__/footer.test.d.ts +2 -0
  47. package/build/esm/backend/__tests__/footer.test.d.ts.map +1 -0
  48. package/build/esm/backend/__tests__/header.test.d.ts +2 -0
  49. package/build/esm/backend/__tests__/header.test.d.ts.map +1 -0
  50. package/build/esm/backend/__tests__/index.spec.d.ts +2 -0
  51. package/build/esm/backend/__tests__/index.spec.d.ts.map +1 -0
  52. package/build/esm/backend/__tests__/language-select.test.d.ts +2 -0
  53. package/build/esm/backend/__tests__/language-select.test.d.ts.map +1 -0
  54. package/build/esm/backend/__tests__/logger.spec.d.ts +2 -0
  55. package/build/esm/backend/__tests__/logger.spec.d.ts.map +1 -0
  56. package/build/esm/backend/__tests__/mobile-base.test.d.ts +2 -0
  57. package/build/esm/backend/__tests__/mobile-base.test.d.ts.map +1 -0
  58. package/build/esm/backend/__tests__/phase-banner.test.d.ts +2 -0
  59. package/build/esm/backend/__tests__/phase-banner.test.d.ts.map +1 -0
  60. package/build/esm/backend/__tests__/progress-button.test.d.ts +2 -0
  61. package/build/esm/backend/__tests__/progress-button.test.d.ts.map +1 -0
  62. package/build/esm/backend/__tests__/skip-link.test.d.ts +2 -0
  63. package/build/esm/backend/__tests__/skip-link.test.d.ts.map +1 -0
  64. package/build/esm/backend/__tests__/spinner.test.d.ts +2 -0
  65. package/build/esm/backend/__tests__/spinner.test.d.ts.map +1 -0
  66. package/build/esm/backend/index.d.ts +45 -0
  67. package/build/esm/backend/index.d.ts.map +1 -0
  68. package/build/esm/backend/index.js +15 -3
  69. package/build/esm/backend/lib/helmet.d.ts +3 -0
  70. package/build/esm/backend/lib/helmet.d.ts.map +1 -0
  71. package/build/esm/backend/lib/index.d.ts +4 -0
  72. package/build/esm/backend/lib/index.d.ts.map +1 -0
  73. package/build/esm/backend/lib/locals.d.ts +12 -0
  74. package/build/esm/backend/lib/locals.d.ts.map +1 -0
  75. package/build/esm/backend/lib/settings.d.ts +26 -0
  76. package/build/esm/backend/lib/settings.d.ts.map +1 -0
  77. package/build/esm/backend/test/jest.setup.d.ts +2 -0
  78. package/build/esm/backend/test/jest.setup.d.ts.map +1 -0
  79. package/build/esm/backend/test/jestHelper.d.ts +5 -0
  80. package/build/esm/backend/test/jestHelper.d.ts.map +1 -0
  81. package/build/esm/backend/utils/logger.d.ts +9 -0
  82. package/build/esm/backend/utils/logger.d.ts.map +1 -0
  83. package/package.json +1 -1
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cookie-banner.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookie-banner.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/cookie-banner.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=footer.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"footer.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/footer.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=header.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/header.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.spec.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/index.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=language-select.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language-select.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/language-select.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=logger.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.spec.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/logger.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import "@testing-library/jest-dom";
2
+ //# sourceMappingURL=mobile-base.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mobile-base.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/mobile-base.test.ts"],"names":[],"mappings":"AACA,OAAO,2BAA2B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=phase-banner.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phase-banner.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/phase-banner.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=progress-button.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress-button.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/progress-button.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=skip-link.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skip-link.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/skip-link.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=spinner.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/spinner.test.ts"],"names":[],"mappings":""}
@@ -41,7 +41,7 @@ var footer$1 = {
41
41
  text: "Telerau ac amodau"
42
42
  },
43
43
  {
44
- href: "https://www.gov.uk/government/publications/govuk-one-login-privacy-notice",
44
+ href: "https://www.gov.uk/government/publications/govuk-one-login-privacy-notice.cy",
45
45
  text: "Hysbysiad preifatrwydd"
46
46
  },
47
47
  {
@@ -220,13 +220,13 @@ const getAssetPath = (req, res, next) => {
220
220
  res.locals.assetPath = req.app.get("APP.ASSET_PATH");
221
221
  next();
222
222
  };
223
- const getLanguageToggle = (req, res, next, customLogger) => {
223
+ const getLanguageToggle = (req, res, next, customLogger = undefined) => {
224
224
  if (customLogger) {
225
225
  setCustomLogger(customLogger);
226
226
  }
227
227
  const logger = getLogger();
228
228
  const toggleValue = req.app.get("APP.LANGUAGE_TOGGLE_ENABLED");
229
- res.locals.showLanguageToggle = toggleValue && toggleValue === "1";
229
+ res.locals.showLanguageToggle = toggleValue && toggleValue === true;
230
230
  res.locals.htmlLang = req.i18n.language;
231
231
  try {
232
232
  res.locals.currentUrl = new URL(req.protocol + "://" + req.get("host") + req.originalUrl);
@@ -238,10 +238,17 @@ const getLanguageToggle = (req, res, next, customLogger) => {
238
238
  }
239
239
  next();
240
240
  };
241
+ const getDeviceIntelligence = (req, res, next) => {
242
+ const toggleValue = req.app.get("APP.DEVICE_INTELLIGENCE_ENABLED");
243
+ res.locals.deviceIntelligenceEnabled = toggleValue && toggleValue === true;
244
+ res.locals.deviceIntelligenceDomain = req.app.get("APP.DEVICE_INTELLIGENCE_DOMAIN");
245
+ next();
246
+ };
241
247
 
242
248
  var locals = /*#__PURE__*/Object.freeze({
243
249
  __proto__: null,
244
250
  getAssetPath: getAssetPath,
251
+ getDeviceIntelligence: getDeviceIntelligence,
245
252
  getGTM: getGTM,
246
253
  getLanguageToggle: getLanguageToggle
247
254
  });
@@ -261,9 +268,14 @@ const setGTM = ({ app, ga4ContainerId, analyticsCookieDomain, ga4Enabled, ga4Pag
261
268
  const setLanguageToggle = ({ app, showLanguageToggle, }) => {
262
269
  app.set("APP.LANGUAGE_TOGGLE_ENABLED", showLanguageToggle);
263
270
  };
271
+ const setDeviceIntelligence = ({ app, deviceIntelligenceEnabled, deviceIntelligenceDomain, }) => {
272
+ app.set("APP.DEVICE_INTELLIGENCE_ENABLED", deviceIntelligenceEnabled);
273
+ app.set("APP.DEVICE_INTELLIGENCE_DOMAIN", deviceIntelligenceDomain);
274
+ };
264
275
 
265
276
  var settings = /*#__PURE__*/Object.freeze({
266
277
  __proto__: null,
278
+ setDeviceIntelligence: setDeviceIntelligence,
267
279
  setGTM: setGTM,
268
280
  setLanguageToggle: setLanguageToggle
269
281
  });
@@ -0,0 +1,45 @@
1
+ import { NextFunction, Request, Response } from "express";
2
+ import i18next from "i18next";
3
+ export * from "./lib";
4
+ interface I18nData {
5
+ language: string;
6
+ store: {
7
+ data: {
8
+ [key: string]: unknown;
9
+ };
10
+ };
11
+ }
12
+ interface ExpressRequest extends Request {
13
+ i18n: I18nData;
14
+ }
15
+ interface ExpressResponse extends Response {
16
+ locals: {
17
+ translations: unknown;
18
+ basePath?: string;
19
+ };
20
+ }
21
+ interface PlainRequest {
22
+ i18n: I18nData;
23
+ }
24
+ interface PlainResponse {
25
+ locals: {
26
+ translations: unknown;
27
+ basePath?: string;
28
+ };
29
+ }
30
+ export declare function frontendUiMiddleware(req: ExpressRequest, res: ExpressResponse, next: NextFunction): void;
31
+ export declare function frontendUiMiddleware(req: PlainRequest, res: PlainResponse, next: NextFunction): void;
32
+ export declare const setFrontendUiTranslations: (instanceI18n: typeof i18next) => void;
33
+ export declare const frontendUiMiddlewareIdentityBypass: (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => void;
34
+ export declare function validateTranslations(en: Record<string, unknown>, cy: Record<string, unknown>, path?: string): void;
35
+ export declare function warnCharacterLimit(text: string, limit: number): void;
36
+ export declare function addFrontendUiGlobals(nunjucksEnv: {
37
+ addGlobal: (name: string, value: unknown) => void;
38
+ }): void;
39
+ export declare function addLanguageParam(language: string, url?: URL): string;
40
+ export declare function contactUsUrl(baseUrl: string, urlToAppend: string): string | null;
41
+ export declare const setBaseTranslations: (instanceI18n: typeof i18next, filePath?: string) => void;
42
+ export declare const getTranslationObject: (locale: string, filepath?: string) => Record<string, unknown>;
43
+ export { default as frontendUiTranslationEn } from "../locales/en/translation.json";
44
+ export { default as frontendUiTranslationCy } from "../locales/cy/translation.json";
45
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,45 @@
1
+ import { NextFunction, Request, Response } from "express";
2
+ import i18next from "i18next";
3
+ export * from "./lib";
4
+ interface I18nData {
5
+ language: string;
6
+ store: {
7
+ data: {
8
+ [key: string]: unknown;
9
+ };
10
+ };
11
+ }
12
+ interface ExpressRequest extends Request {
13
+ i18n: I18nData;
14
+ }
15
+ interface ExpressResponse extends Response {
16
+ locals: {
17
+ translations: unknown;
18
+ basePath?: string;
19
+ };
20
+ }
21
+ interface PlainRequest {
22
+ i18n: I18nData;
23
+ }
24
+ interface PlainResponse {
25
+ locals: {
26
+ translations: unknown;
27
+ basePath?: string;
28
+ };
29
+ }
30
+ export declare function frontendUiMiddleware(req: ExpressRequest, res: ExpressResponse, next: NextFunction): void;
31
+ export declare function frontendUiMiddleware(req: PlainRequest, res: PlainResponse, next: NextFunction): void;
32
+ export declare const setFrontendUiTranslations: (instanceI18n: typeof i18next) => void;
33
+ export declare const frontendUiMiddlewareIdentityBypass: (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => void;
34
+ export declare function validateTranslations(en: Record<string, unknown>, cy: Record<string, unknown>, path?: string): void;
35
+ export declare function warnCharacterLimit(text: string, limit: number): void;
36
+ export declare function addFrontendUiGlobals(nunjucksEnv: {
37
+ addGlobal: (name: string, value: unknown) => void;
38
+ }): void;
39
+ export declare function addLanguageParam(language: string, url?: URL): string;
40
+ export declare function contactUsUrl(baseUrl: string, urlToAppend: string): string | null;
41
+ export declare const setBaseTranslations: (instanceI18n: typeof i18next, filePath?: string) => void;
42
+ export declare const getTranslationObject: (locale: string, filepath?: string) => Record<string, unknown>;
43
+ export { default as frontendUiTranslationEn } from "../locales/en/translation.json";
44
+ export { default as frontendUiTranslationCy } from "../locales/cy/translation.json";
45
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,OAAO,MAAM,SAAS,CAAC;AAK9B,cAAc,OAAO,CAAC;AAKtB,UAAU,QAAQ;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE;QACL,IAAI,EAAE;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;SAAE,CAAC;KAClC,CAAC;CACH;AAED,UAAU,cAAe,SAAQ,OAAO;IACtC,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,UAAU,eAAgB,SAAQ,QAAQ;IACxC,MAAM,EAAE;QACN,YAAY,EAAE,OAAO,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,UAAU,aAAa;IACrB,MAAM,EAAE;QACN,YAAY,EAAE,OAAO,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAGD,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,YAAY,GACjB,IAAI,CAAC;AAER,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,YAAY,EACjB,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,YAAY,GACjB,IAAI,CAAC;AAaR,eAAO,MAAM,yBAAyB,GAAI,cAAc,OAAO,OAAO,SAsBrE,CAAC;AAEF,eAAO,MAAM,kCAAkC,GAC7C,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,MAAM,YAAY,SAUnB,CAAC;AAsBF,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3B,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3B,IAAI,SAAK,GACR,IAAI,CAyBN;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAM7D;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE;IAChD,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACnD,QAIA;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,UAU3D;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,iBAkBhE;AAED,eAAO,MAAM,mBAAmB,GAC9B,cAAc,OAAO,OAAO,EAC5B,WAAW,MAAM,SASlB,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,MAAM,EACd,WAAW,MAAM,KAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAsBxB,CAAC;AAEF,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,gCAAgC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type HelmetOptions } from "helmet";
2
+ export declare function getHelmetConfig(additions?: HelmetOptions): HelmetOptions;
3
+ //# sourceMappingURL=helmet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helmet.d.ts","sourceRoot":"","sources":["../../../../src/lib/helmet.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,QAAQ,CAAC;AAiD5C,wBAAgB,eAAe,CAAC,SAAS,GAAE,aAAkB,GAAG,aAAa,CAE5E"}
@@ -0,0 +1,4 @@
1
+ export * as locals from "./locals";
2
+ export * as settings from "./settings";
3
+ export * from "./helmet";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,cAAc,UAAU,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { NextFunction, Request, Response } from "express";
2
+ import { CustomLogger } from "../utils/logger";
3
+ declare const getGTM: (req: Request, res: Response, next: NextFunction) => void;
4
+ declare const getAssetPath: (req: Request, res: Response, next: NextFunction) => void;
5
+ declare const getLanguageToggle: (req: Request & {
6
+ i18n: {
7
+ language: string;
8
+ };
9
+ }, res: Response, next: NextFunction, customLogger?: CustomLogger | undefined) => void;
10
+ declare const getDeviceIntelligence: (req: Request, res: Response, next: NextFunction) => void;
11
+ export { getAssetPath, getGTM, getLanguageToggle, getDeviceIntelligence };
12
+ //# sourceMappingURL=locals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locals.d.ts","sourceRoot":"","sources":["../../../../src/lib/locals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,YAAY,EAA8B,MAAM,iBAAiB,CAAC;AAE3E,QAAA,MAAM,MAAM,GAAI,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,KAAG,IA0BjE,CAAC;AAEF,QAAA,MAAM,YAAY,GAChB,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,MAAM,YAAY,KACjB,IAGF,CAAC;AAEF,QAAA,MAAM,iBAAiB,GACrB,KAAK,OAAO,GAAG;IAAE,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,EAC7C,KAAK,QAAQ,EACb,MAAM,YAAY,EAClB,eAAc,YAAY,GAAG,SAAqB,KACjD,IAqBF,CAAC;AAEF,QAAA,MAAM,qBAAqB,GACzB,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,MAAM,YAAY,KACjB,IAOF,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { Express } from "express";
2
+ interface SetGTM {
3
+ app: Express;
4
+ ga4ContainerId: string;
5
+ analyticsCookieDomain: string;
6
+ ga4Enabled: boolean;
7
+ ga4PageViewEnabled: boolean;
8
+ ga4FormResponseEnabled: boolean;
9
+ ga4FormErrorEnabled: boolean;
10
+ ga4FormChangeEnabled: boolean;
11
+ ga4NavigationEnabled: boolean;
12
+ ga4SelectContentEnabled: boolean;
13
+ analyticsDataSensitive: boolean;
14
+ }
15
+ declare const setGTM: ({ app, ga4ContainerId, analyticsCookieDomain, ga4Enabled, ga4PageViewEnabled, ga4FormResponseEnabled, ga4FormErrorEnabled, ga4FormChangeEnabled, ga4NavigationEnabled, ga4SelectContentEnabled, analyticsDataSensitive, }: SetGTM) => void;
16
+ declare const setLanguageToggle: ({ app, showLanguageToggle, }: {
17
+ app: Express;
18
+ showLanguageToggle: boolean;
19
+ }) => void;
20
+ declare const setDeviceIntelligence: ({ app, deviceIntelligenceEnabled, deviceIntelligenceDomain, }: {
21
+ app: Express;
22
+ deviceIntelligenceEnabled: boolean;
23
+ deviceIntelligenceDomain: string;
24
+ }) => void;
25
+ export { setGTM, setLanguageToggle, setDeviceIntelligence };
26
+ //# sourceMappingURL=settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../../src/lib/settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,UAAU,MAAM;IACd,GAAG,EAAE,OAAO,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,sBAAsB,EAAE,OAAO,CAAC;IAChC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,uBAAuB,EAAE,OAAO,CAAC;IACjC,sBAAsB,EAAE,OAAO,CAAC;CACjC;AAED,QAAA,MAAM,MAAM,GAAI,2NAYb,MAAM,SAWR,CAAC;AAEF,QAAA,MAAM,iBAAiB,GAAI,8BAGxB;IACD,GAAG,EAAE,OAAO,CAAC;IACb,kBAAkB,EAAE,OAAO,CAAC;CAC7B,SAEA,CAAC;AAEF,QAAA,MAAM,qBAAqB,GAAI,+DAI5B;IACD,GAAG,EAAE,OAAO,CAAC;IACb,yBAAyB,EAAE,OAAO,CAAC;IACnC,wBAAwB,EAAE,MAAM,CAAC;CAClC,SAGA,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=jest.setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest.setup.d.ts","sourceRoot":"","sources":["../../../../src/test/jest.setup.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import nunjucks from "nunjucks";
2
+ export declare const nunjucksEnv: nunjucks.Environment;
3
+ export declare function render(macroFolder: string, macroName: string, params?: {}): Document;
4
+ export declare function renderTemplate(macroPath: string, params?: {}): Document;
5
+ //# sourceMappingURL=jestHelper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jestHelper.d.ts","sourceRoot":"","sources":["../../../../src/test/jestHelper.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAYhC,eAAO,MAAM,WAAW,sBAMvB,CAAC;AAQF,wBAAgB,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,KAAK,YASzE;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,KAAK,YAM5D"}
@@ -0,0 +1,9 @@
1
+ import type { Logger } from "pino";
2
+ export type CustomLogger = {
3
+ trace: (message: string) => void;
4
+ warn: (message: string) => void;
5
+ };
6
+ export declare const setCustomLogger: (customLogger: CustomLogger) => void;
7
+ export declare const getLogger: () => Logger | CustomLogger;
8
+ export declare const resetLogger: () => void;
9
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAKnC,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,cAAc,YAAY,SAEzD,CAAC;AAEF,eAAO,MAAM,SAAS,QAAO,MAAM,GAAG,YAWrC,CAAC;AAEF,eAAO,MAAM,WAAW,YAEvB,CAAC"}
@@ -78,11 +78,9 @@
78
78
  window
79
79
  .DI
80
80
  .appInit({
81
- ga4ContainerId: "{{ga4ContainerId}}",
82
- uaContainerId: "{{uaContainerId}}"
81
+ ga4ContainerId: "{{ga4ContainerId}}"
83
82
  }, {
84
83
  enableGa4Tracking: {{ga4Enabled}},
85
- enableUaTracking: {{uaEnabled}},
86
84
  enablePageViewTracking: {{ga4PageViewEnabled}},
87
85
  enableFormErrorTracking: {{ga4FormErrorEnabled}},
88
86
  enableFormChangeTracking: {{ga4FormChangeEnabled}},
@@ -78,11 +78,9 @@
78
78
  window
79
79
  .DI
80
80
  .appInit({
81
- ga4ContainerId: "{{ga4ContainerId}}",
82
- uaContainerId: "{{uaContainerId}}"
81
+ ga4ContainerId: "{{ga4ContainerId}}"
83
82
  }, {
84
83
  enableGa4Tracking: {{ga4Enabled}},
85
- enableUaTracking: {{uaEnabled}},
86
84
  enablePageViewTracking: {{ga4PageViewEnabled}},
87
85
  enableFormErrorTracking: {{ga4FormErrorEnabled}},
88
86
  enableFormChangeTracking: {{ga4FormChangeEnabled}},
@@ -0,0 +1,139 @@
1
+ {% if MAY_2025_REBRAND_ENABLED %}
2
+ {% set govukRebrand = true %}
3
+ {% set assetPath = "/public/rebrand" %}
4
+ {% endif %}
5
+
6
+ {% if isPageDataSensitive is not defined %}
7
+ {% set isPageDataSensitive = true %}
8
+ {% endif %}
9
+ {% set taxLevel1 = 'web cri' %}
10
+
11
+ {% extends "govuk/template.njk" %}
12
+
13
+ {% from "frontend-analytics/components/ga4-opl/macro.njk" import ga4OnPageLoad %}
14
+ {% from "frontend-ui/build/components/cookie-banner/macro.njk" import frontendUiCookieBanner %}
15
+ {% from "frontend-ui/build/components/phase-banner/macro.njk" import frontendUiPhaseBanner %}
16
+ {% from "frontend-ui/build/components/header/macro.njk" import frontendUiHeader %}
17
+ {% from "frontend-ui/build/components/footer/macro.njk" import frontendUiFooter %}
18
+ {% from "frontend-ui/build/components/language-select/macro.njk" import frontendUiLanguageSelect %}
19
+ {% from "govuk/components/back-link/macro.njk" import govukBackLink %}
20
+ {% from "govuk/components/skip-link/macro.njk" import govukSkipLink %}
21
+
22
+ {% set htmlLang = htmlLang %}
23
+ {% set pageTitleLang = htmlLang %}
24
+ {% set mainLang = htmlLang %}
25
+
26
+ {% block head %}
27
+ <link rel="stylesheet" href="/public/stylesheets/application.css"/>
28
+ {% block headMetaData %}{% endblock %}
29
+ {% endblock %}
30
+
31
+ {% block skipLink %}
32
+ {{ govukSkipLink({
33
+ text: translations.translation.skipLink.title,
34
+ href: "#main-content"
35
+ }) }}
36
+ {% endblock %}
37
+
38
+ {% block pageTitle -%}
39
+ {%- if errorList and errorTitlePrefix %}{{ errorTitlePrefix }}: {% endif -%}
40
+ {%- if pageTitle %}{{ pageTitle }} – GOV.UK One Login{% endif -%}
41
+ {%- endblock %}
42
+
43
+ {% block bodyStart %}
44
+ {% block cookieBanner %}
45
+ {{ frontendUiCookieBanner({
46
+ translations: translations.translation.cookieBanner
47
+ }) }}
48
+ {% endblock %}
49
+ {% endblock %}
50
+
51
+ {% block header %}
52
+ {{ frontendUiHeader({
53
+ translations: translations.translation.header,
54
+ homepageUrl: "https://www.gov.uk"
55
+ }) }}
56
+ {% endblock %}
57
+
58
+ {% block main %}
59
+ <div class="govuk-width-container">
60
+ {{ frontendUiPhaseBanner({
61
+ translations: translations.translation.phaseBanner,
62
+ url: currentUrl,
63
+ contactUrl: 'https://signin.account.gov.uk/contact-us'
64
+ }) }}
65
+
66
+ {% if showLanguageToggle %}
67
+ {{ frontendUiLanguageSelect({
68
+ translations: translations.translation.languageSelect,
69
+ url: currentUrl,
70
+ activeLanguage: htmlLang
71
+ }) }}
72
+ {% endif %}
73
+
74
+ {% if backLink %}
75
+ {{ govukBackLink({
76
+ text: backLinkText | default(""),
77
+ href: backLink
78
+ }) }}
79
+ {% endif %}
80
+
81
+ <main class="govuk-main-wrapper" id="main-content">
82
+ <div class="govuk-grid-row">
83
+ <div class="govuk-grid-column-two-thirds">
84
+ {% block content %}{% endblock %}
85
+ </div>
86
+ </div>
87
+ </main>
88
+ </div>
89
+ {% endblock %}
90
+
91
+ {% block footer %}
92
+ {{ frontendUiFooter({
93
+ translations: translations.translation.footer
94
+ }) }}
95
+ {% endblock %}
96
+
97
+ {% block bodyEnd %}
98
+ {% block scripts %}
99
+ <script type="text/javascript" src="/public/javascripts/analytics.js"></script>
100
+ <script type="text/javascript"{% if cspNonce %} nonce="{{ cspNonce }}"{% endif %}>
101
+ window.DI.appInit({
102
+ ga4ContainerId: "{{ ga4ContainerId }}"
103
+ }, {
104
+ enableGa4Tracking: {{ ga4Enabled }},
105
+ enablePageViewTracking: {{ ga4PageViewEnabled }},
106
+ enableFormErrorTracking: {{ ga4FormErrorEnabled }},
107
+ enableFormChangeTracking: {{ ga4FormChangeEnabled }},
108
+ enableFormResponseTracking: {{ ga4FormResponseEnabled }},
109
+ enableNavigationTracking: {{ ga4NavigationEnabled }},
110
+ enableSelectContentTracking: {{ ga4SelectContentEnabled }},
111
+ cookieDomain: "{{ analyticsCookieDomain }}",
112
+ isDataSensitive: {{ analyticsDataSensitive }},
113
+ isPageDataSensitive: {{ isPageDataSensitive }}
114
+ });
115
+ </script>
116
+
117
+ {% if deviceIntelligenceEnabled %}
118
+ <script type="module" src="/public/javascripts/deviceIntelligence.js"></script>
119
+ <script type="module"{% if cspNonce %} nonce="{{ cspNonce }}"{% endif %}>
120
+ import {setFingerprintCookie} from "/public/javascripts/deviceIntelligence.js";
121
+ setFingerprintCookie("{{ deviceIntelligenceDomain }}")
122
+ </script>
123
+ {% endif %}
124
+
125
+ {{ ga4OnPageLoad({
126
+ nonce: cspNonce,
127
+ statusCode: statusCode,
128
+ dynamic: isPageDynamic,
129
+ englishPageTitle: pageTitle,
130
+ taxonomyLevel1: taxLevel1,
131
+ taxonomyLevel2: taxLevel2,
132
+ taxonomyLevel3: taxLevel3,
133
+ taxonomyLevel4: taxLevel4,
134
+ taxonomyLevel5: taxLevel5,
135
+ contentId: contentID,
136
+ loggedInStatus: loggedInStatus
137
+ }) }}
138
+ {% endblock %}
139
+ {% endblock %}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cookie-banner.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookie-banner.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/cookie-banner.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=footer.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"footer.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/footer.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=header.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/header.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.spec.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/index.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=language-select.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language-select.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/language-select.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=logger.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.spec.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/logger.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import "@testing-library/jest-dom";
2
+ //# sourceMappingURL=mobile-base.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mobile-base.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/mobile-base.test.ts"],"names":[],"mappings":"AACA,OAAO,2BAA2B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=phase-banner.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phase-banner.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/phase-banner.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=progress-button.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress-button.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/progress-button.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=skip-link.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skip-link.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/skip-link.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=spinner.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.test.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/spinner.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,45 @@
1
+ import { NextFunction, Request, Response } from "express";
2
+ import i18next from "i18next";
3
+ export * from "./lib";
4
+ interface I18nData {
5
+ language: string;
6
+ store: {
7
+ data: {
8
+ [key: string]: unknown;
9
+ };
10
+ };
11
+ }
12
+ interface ExpressRequest extends Request {
13
+ i18n: I18nData;
14
+ }
15
+ interface ExpressResponse extends Response {
16
+ locals: {
17
+ translations: unknown;
18
+ basePath?: string;
19
+ };
20
+ }
21
+ interface PlainRequest {
22
+ i18n: I18nData;
23
+ }
24
+ interface PlainResponse {
25
+ locals: {
26
+ translations: unknown;
27
+ basePath?: string;
28
+ };
29
+ }
30
+ export declare function frontendUiMiddleware(req: ExpressRequest, res: ExpressResponse, next: NextFunction): void;
31
+ export declare function frontendUiMiddleware(req: PlainRequest, res: PlainResponse, next: NextFunction): void;
32
+ export declare const setFrontendUiTranslations: (instanceI18n: typeof i18next) => void;
33
+ export declare const frontendUiMiddlewareIdentityBypass: (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => void;
34
+ export declare function validateTranslations(en: Record<string, unknown>, cy: Record<string, unknown>, path?: string): void;
35
+ export declare function warnCharacterLimit(text: string, limit: number): void;
36
+ export declare function addFrontendUiGlobals(nunjucksEnv: {
37
+ addGlobal: (name: string, value: unknown) => void;
38
+ }): void;
39
+ export declare function addLanguageParam(language: string, url?: URL): string;
40
+ export declare function contactUsUrl(baseUrl: string, urlToAppend: string): string | null;
41
+ export declare const setBaseTranslations: (instanceI18n: typeof i18next, filePath?: string) => void;
42
+ export declare const getTranslationObject: (locale: string, filepath?: string) => Record<string, unknown>;
43
+ export { default as frontendUiTranslationEn } from "../locales/en/translation.json";
44
+ export { default as frontendUiTranslationCy } from "../locales/cy/translation.json";
45
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,OAAO,MAAM,SAAS,CAAC;AAK9B,cAAc,OAAO,CAAC;AAKtB,UAAU,QAAQ;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE;QACL,IAAI,EAAE;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;SAAE,CAAC;KAClC,CAAC;CACH;AAED,UAAU,cAAe,SAAQ,OAAO;IACtC,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,UAAU,eAAgB,SAAQ,QAAQ;IACxC,MAAM,EAAE;QACN,YAAY,EAAE,OAAO,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,UAAU,aAAa;IACrB,MAAM,EAAE;QACN,YAAY,EAAE,OAAO,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAGD,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,YAAY,GACjB,IAAI,CAAC;AAER,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,YAAY,EACjB,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,YAAY,GACjB,IAAI,CAAC;AAaR,eAAO,MAAM,yBAAyB,GAAI,cAAc,OAAO,OAAO,SAsBrE,CAAC;AAEF,eAAO,MAAM,kCAAkC,GAC7C,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,MAAM,YAAY,SAUnB,CAAC;AAsBF,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3B,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3B,IAAI,SAAK,GACR,IAAI,CAyBN;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAM7D;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE;IAChD,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACnD,QAIA;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,UAU3D;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,iBAkBhE;AAED,eAAO,MAAM,mBAAmB,GAC9B,cAAc,OAAO,OAAO,EAC5B,WAAW,MAAM,SASlB,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,MAAM,EACd,WAAW,MAAM,KAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAsBxB,CAAC;AAEF,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,gCAAgC,CAAC"}
@@ -39,7 +39,7 @@ var footer$1 = {
39
39
  text: "Telerau ac amodau"
40
40
  },
41
41
  {
42
- href: "https://www.gov.uk/government/publications/govuk-one-login-privacy-notice",
42
+ href: "https://www.gov.uk/government/publications/govuk-one-login-privacy-notice.cy",
43
43
  text: "Hysbysiad preifatrwydd"
44
44
  },
45
45
  {
@@ -218,13 +218,13 @@ const getAssetPath = (req, res, next) => {
218
218
  res.locals.assetPath = req.app.get("APP.ASSET_PATH");
219
219
  next();
220
220
  };
221
- const getLanguageToggle = (req, res, next, customLogger) => {
221
+ const getLanguageToggle = (req, res, next, customLogger = undefined) => {
222
222
  if (customLogger) {
223
223
  setCustomLogger(customLogger);
224
224
  }
225
225
  const logger = getLogger();
226
226
  const toggleValue = req.app.get("APP.LANGUAGE_TOGGLE_ENABLED");
227
- res.locals.showLanguageToggle = toggleValue && toggleValue === "1";
227
+ res.locals.showLanguageToggle = toggleValue && toggleValue === true;
228
228
  res.locals.htmlLang = req.i18n.language;
229
229
  try {
230
230
  res.locals.currentUrl = new URL(req.protocol + "://" + req.get("host") + req.originalUrl);
@@ -236,10 +236,17 @@ const getLanguageToggle = (req, res, next, customLogger) => {
236
236
  }
237
237
  next();
238
238
  };
239
+ const getDeviceIntelligence = (req, res, next) => {
240
+ const toggleValue = req.app.get("APP.DEVICE_INTELLIGENCE_ENABLED");
241
+ res.locals.deviceIntelligenceEnabled = toggleValue && toggleValue === true;
242
+ res.locals.deviceIntelligenceDomain = req.app.get("APP.DEVICE_INTELLIGENCE_DOMAIN");
243
+ next();
244
+ };
239
245
 
240
246
  var locals = /*#__PURE__*/Object.freeze({
241
247
  __proto__: null,
242
248
  getAssetPath: getAssetPath,
249
+ getDeviceIntelligence: getDeviceIntelligence,
243
250
  getGTM: getGTM,
244
251
  getLanguageToggle: getLanguageToggle
245
252
  });
@@ -259,9 +266,14 @@ const setGTM = ({ app, ga4ContainerId, analyticsCookieDomain, ga4Enabled, ga4Pag
259
266
  const setLanguageToggle = ({ app, showLanguageToggle, }) => {
260
267
  app.set("APP.LANGUAGE_TOGGLE_ENABLED", showLanguageToggle);
261
268
  };
269
+ const setDeviceIntelligence = ({ app, deviceIntelligenceEnabled, deviceIntelligenceDomain, }) => {
270
+ app.set("APP.DEVICE_INTELLIGENCE_ENABLED", deviceIntelligenceEnabled);
271
+ app.set("APP.DEVICE_INTELLIGENCE_DOMAIN", deviceIntelligenceDomain);
272
+ };
262
273
 
263
274
  var settings = /*#__PURE__*/Object.freeze({
264
275
  __proto__: null,
276
+ setDeviceIntelligence: setDeviceIntelligence,
265
277
  setGTM: setGTM,
266
278
  setLanguageToggle: setLanguageToggle
267
279
  });
@@ -0,0 +1,3 @@
1
+ import { type HelmetOptions } from "helmet";
2
+ export declare function getHelmetConfig(additions?: HelmetOptions): HelmetOptions;
3
+ //# sourceMappingURL=helmet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helmet.d.ts","sourceRoot":"","sources":["../../../../src/lib/helmet.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,QAAQ,CAAC;AAiD5C,wBAAgB,eAAe,CAAC,SAAS,GAAE,aAAkB,GAAG,aAAa,CAE5E"}
@@ -0,0 +1,4 @@
1
+ export * as locals from "./locals";
2
+ export * as settings from "./settings";
3
+ export * from "./helmet";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,cAAc,UAAU,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { NextFunction, Request, Response } from "express";
2
+ import { CustomLogger } from "../utils/logger";
3
+ declare const getGTM: (req: Request, res: Response, next: NextFunction) => void;
4
+ declare const getAssetPath: (req: Request, res: Response, next: NextFunction) => void;
5
+ declare const getLanguageToggle: (req: Request & {
6
+ i18n: {
7
+ language: string;
8
+ };
9
+ }, res: Response, next: NextFunction, customLogger?: CustomLogger | undefined) => void;
10
+ declare const getDeviceIntelligence: (req: Request, res: Response, next: NextFunction) => void;
11
+ export { getAssetPath, getGTM, getLanguageToggle, getDeviceIntelligence };
12
+ //# sourceMappingURL=locals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locals.d.ts","sourceRoot":"","sources":["../../../../src/lib/locals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,YAAY,EAA8B,MAAM,iBAAiB,CAAC;AAE3E,QAAA,MAAM,MAAM,GAAI,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,KAAG,IA0BjE,CAAC;AAEF,QAAA,MAAM,YAAY,GAChB,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,MAAM,YAAY,KACjB,IAGF,CAAC;AAEF,QAAA,MAAM,iBAAiB,GACrB,KAAK,OAAO,GAAG;IAAE,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,EAC7C,KAAK,QAAQ,EACb,MAAM,YAAY,EAClB,eAAc,YAAY,GAAG,SAAqB,KACjD,IAqBF,CAAC;AAEF,QAAA,MAAM,qBAAqB,GACzB,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,MAAM,YAAY,KACjB,IAOF,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { Express } from "express";
2
+ interface SetGTM {
3
+ app: Express;
4
+ ga4ContainerId: string;
5
+ analyticsCookieDomain: string;
6
+ ga4Enabled: boolean;
7
+ ga4PageViewEnabled: boolean;
8
+ ga4FormResponseEnabled: boolean;
9
+ ga4FormErrorEnabled: boolean;
10
+ ga4FormChangeEnabled: boolean;
11
+ ga4NavigationEnabled: boolean;
12
+ ga4SelectContentEnabled: boolean;
13
+ analyticsDataSensitive: boolean;
14
+ }
15
+ declare const setGTM: ({ app, ga4ContainerId, analyticsCookieDomain, ga4Enabled, ga4PageViewEnabled, ga4FormResponseEnabled, ga4FormErrorEnabled, ga4FormChangeEnabled, ga4NavigationEnabled, ga4SelectContentEnabled, analyticsDataSensitive, }: SetGTM) => void;
16
+ declare const setLanguageToggle: ({ app, showLanguageToggle, }: {
17
+ app: Express;
18
+ showLanguageToggle: boolean;
19
+ }) => void;
20
+ declare const setDeviceIntelligence: ({ app, deviceIntelligenceEnabled, deviceIntelligenceDomain, }: {
21
+ app: Express;
22
+ deviceIntelligenceEnabled: boolean;
23
+ deviceIntelligenceDomain: string;
24
+ }) => void;
25
+ export { setGTM, setLanguageToggle, setDeviceIntelligence };
26
+ //# sourceMappingURL=settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../../src/lib/settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,UAAU,MAAM;IACd,GAAG,EAAE,OAAO,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,sBAAsB,EAAE,OAAO,CAAC;IAChC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,uBAAuB,EAAE,OAAO,CAAC;IACjC,sBAAsB,EAAE,OAAO,CAAC;CACjC;AAED,QAAA,MAAM,MAAM,GAAI,2NAYb,MAAM,SAWR,CAAC;AAEF,QAAA,MAAM,iBAAiB,GAAI,8BAGxB;IACD,GAAG,EAAE,OAAO,CAAC;IACb,kBAAkB,EAAE,OAAO,CAAC;CAC7B,SAEA,CAAC;AAEF,QAAA,MAAM,qBAAqB,GAAI,+DAI5B;IACD,GAAG,EAAE,OAAO,CAAC;IACb,yBAAyB,EAAE,OAAO,CAAC;IACnC,wBAAwB,EAAE,MAAM,CAAC;CAClC,SAGA,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=jest.setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest.setup.d.ts","sourceRoot":"","sources":["../../../../src/test/jest.setup.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import nunjucks from "nunjucks";
2
+ export declare const nunjucksEnv: nunjucks.Environment;
3
+ export declare function render(macroFolder: string, macroName: string, params?: {}): Document;
4
+ export declare function renderTemplate(macroPath: string, params?: {}): Document;
5
+ //# sourceMappingURL=jestHelper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jestHelper.d.ts","sourceRoot":"","sources":["../../../../src/test/jestHelper.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAYhC,eAAO,MAAM,WAAW,sBAMvB,CAAC;AAQF,wBAAgB,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,KAAK,YASzE;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,KAAK,YAM5D"}
@@ -0,0 +1,9 @@
1
+ import type { Logger } from "pino";
2
+ export type CustomLogger = {
3
+ trace: (message: string) => void;
4
+ warn: (message: string) => void;
5
+ };
6
+ export declare const setCustomLogger: (customLogger: CustomLogger) => void;
7
+ export declare const getLogger: () => Logger | CustomLogger;
8
+ export declare const resetLogger: () => void;
9
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAKnC,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,cAAc,YAAY,SAEzD,CAAC;AAEF,eAAO,MAAM,SAAS,QAAO,MAAM,GAAG,YAWrC,CAAC;AAEF,eAAO,MAAM,WAAW,YAEvB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@govuk-one-login/frontend-ui",
3
- "version": "5.2.1",
3
+ "version": "5.3.0",
4
4
  "description": "",
5
5
  "main": "build/cjs/backend/index.cjs",
6
6
  "module": "build/esm/backend/index.js",