@dwp/govuk-casa 8.11.0 → 8.12.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 (43) hide show
  1. package/README.md +1 -1
  2. package/dist/assets/css/casa-ie8.css +1 -1
  3. package/dist/assets/css/casa.css +1 -1
  4. package/dist/casa.d.ts +25 -1
  5. package/dist/casa.js +23 -1
  6. package/dist/casa.js.map +1 -1
  7. package/dist/lib/CasaTemplateLoader.js +1 -1
  8. package/dist/lib/CasaTemplateLoader.js.map +1 -1
  9. package/dist/lib/JourneyContext.d.ts +32 -6
  10. package/dist/lib/JourneyContext.js +70 -11
  11. package/dist/lib/JourneyContext.js.map +1 -1
  12. package/dist/lib/MutableRouter.js +1 -1
  13. package/dist/lib/MutableRouter.js.map +1 -1
  14. package/dist/lib/Plan.js +1 -1
  15. package/dist/lib/Plan.js.map +1 -1
  16. package/dist/lib/configuration-ingestor.d.ts +1 -0
  17. package/dist/lib/configuration-ingestor.js +37 -1
  18. package/dist/lib/configuration-ingestor.js.map +1 -1
  19. package/dist/lib/configure.js +2 -1
  20. package/dist/lib/configure.js.map +1 -1
  21. package/dist/lib/context-id-generators.d.ts +27 -0
  22. package/dist/lib/context-id-generators.js +54 -0
  23. package/dist/lib/context-id-generators.js.map +1 -0
  24. package/dist/lib/validators/range.js +2 -1
  25. package/dist/lib/validators/range.js.map +1 -1
  26. package/dist/middleware/data.d.ts +2 -1
  27. package/dist/middleware/data.js +7 -1
  28. package/dist/middleware/data.js.map +1 -1
  29. package/dist/middleware/gather-fields.js +1 -1
  30. package/dist/middleware/gather-fields.js.map +1 -1
  31. package/dist/middleware/sanitise-fields.js +1 -1
  32. package/dist/middleware/sanitise-fields.js.map +1 -1
  33. package/dist/mjs/esm-wrapper.js +1 -0
  34. package/package.json +21 -22
  35. package/src/casa.js +26 -0
  36. package/src/lib/JourneyContext.js +79 -11
  37. package/src/lib/configuration-ingestor.js +16 -0
  38. package/src/lib/configure.js +2 -0
  39. package/src/lib/context-id-generators.js +71 -0
  40. package/src/lib/validators/range.js +2 -1
  41. package/src/middleware/data.js +8 -0
  42. package/src/middleware/gather-fields.js +4 -1
  43. package/src/middleware/sanitise-fields.js +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"configuration-ingestor.js","sourceRoot":"","sources":["../../src/lib/configuration-ingestor.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"configuration-ingestor.js","sourceRoot":"","sources":["../../src/lib/configuration-ingestor.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAgD;AAChD,kDAA0B;AAC1B,yCAAuC;AACvC,wDAA6B;AAC7B,4DAAiC;AACjC,yCAKoB;AACpB,gFAAkE;AAElE;;;GAGG;AAEH;;;GAGG;AAEH,MAAM,GAAG,GAAG,IAAA,mBAAM,EAAC,4BAA4B,CAAC,CAAC;AAEjD,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAExB;;;;;;;;GAQG;AACH,SAAgB,kBAAkB,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI;IACtE,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,iBAAiB,EAAE;QAC9D,MAAM,IAAI,SAAS,CAAC,wBAAwB,CAAC,CAAC;KAC/C;IACD,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AAClB,CAAC;AALD,gDAKC;AAED;;;;;;;;GAQG;AACH,SAAgB,gBAAgB,CAAC,IAAI,GAAG,EAAE;IACxC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACxB,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;KACtE;IACD,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QACtB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,MAAM,IAAI,SAAS,CAAC,wCAAwC,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;SAC7F;IACH,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC;AAVD,4CAUC;AAED;;;;;;;;GAQG;AACH,SAAgB,mBAAmB,CAAC,OAAO,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;IACxD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;KACrE;IACD,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC5B,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAC9B,MAAM,IAAI,SAAS,CAAC,qCAAqC,OAAO,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;SAChG;IACH,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC;AAVD,kDAUC;AAED;;;;;;;GAOG;AACH,SAAgB,gBAAgB,CAAC,QAAQ;IACvC,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;QACnC,OAAO,SAAS,CAAC;KAClB;IACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QAC1B,MAAM,IAAI,WAAW,CAAC,4CAA4C,CAAC,CAAC;KACrE;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AARD,4CAQC;AAED;;;;;;;;GAQG;AACH,SAAgB,qBAAqB,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI;IAC5E,IAAI,OAAO,KAAK,SAAS,EAAE;QACzB,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;KACpB;IAED,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC/B,MAAM,IAAI,SAAS,CAAC,uCAAuC,CAAC,CAAC;KAC9D;IAED,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAVD,sDAUC;AAED;;;;;;;;GAQG;AACH,SAAgB,aAAa,CAAC,IAAI,GAAG,EAAE;IACrC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACxB,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC,CAAC;KAClE;IACD,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QACtB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,MAAM,IAAI,SAAS,CAAC,wCAAwC,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;SACzF;IACH,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC;AAVD,sCAUC;AAED;;;;;;;;GAQG;AACH,SAAgB,qBAAqB,CAAC,MAAM;IAC1C,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QACjC,MAAM,cAAc,CAAC,4CAA4C,CAAC,CAAA;KACnE;SAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QACrC,MAAM,IAAI,SAAS,CAAC,kDAAkD,CAAC,CAAC;KACzE;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAPD,sDAOC;AAED;;;;;;;;GAQG;AACH,SAAgB,kBAAkB,CAAC,GAAG,GAAG,IAAI;IAC3C,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QAC3B,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;KACrE;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AALD,gDAKC;AAED;;;;;;;;GAQG;AACH,SAAgB,mBAAmB,CAAC,IAAI,GAAG,cAAc;IACvD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC5B,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;KACrE;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AALD,kDAKC;AAED;;;;;;;;GAQG;AACH,SAAgB,qBAAqB,CAAC,MAAM;IAC1C,IAAI,MAAM,KAAK,SAAS,EAAE;QACxB,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;KACpF;IACD,IAAI,OAAO,MAAM,KAAK,SAAS,EAAE;QAC/B,MAAM,IAAI,SAAS,CAAC,sDAAsD,CAAC,CAAC;KAC7E;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AARD,sDAQC;AAED;;;;;;GAMG;AACH,SAAgB,oBAAoB,CAAC,KAAK;IACxC,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;QAChC,GAAG,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;QACpF,OAAO,IAAI,CAAC;KACb;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAND,oDAMC;AAED;;;;;;;GAOG;AACH,SAAgB,yBAAyB,CAAC,UAAU,EAAE,WAAW,GAAG,GAAG;IACrE,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE;QACrC,OAAO,WAAW,CAAC;KACpB;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AALD,8DAKC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAgB,6BAA6B,CAAC,cAAc,EAAE,WAAW;IACvE,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAE3D,IAAI,WAAW,KAAK,SAAS,EAAE;QAC7B,MAAM,IAAI,SAAS,CAAC,mEAAmE,CAAC,CAAC;KAC1F;SAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;QAC7C,MAAM,IAAI,SAAS,CAAC,8HAA8H,CAAC,CAAC;KACrJ;IAED,MAAM,KAAK,GAAG,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC;IAC1E,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QAChC,MAAM,IAAI,SAAS,CAAC,+FAA+F,CAAC,CAAC;KACtH;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAfD,sEAeC;AAED,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;IACvC,IAAI;QACF,IAAA,2BAAgB,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,UAAU,EAAE;YACzC,MAAM,IAAI,SAAS,CAAC,oCAAoC,CAAC,CAAC;SAC3D;KACF;IAAC,OAAO,GAAG,EAAE;QACZ,GAAG,CAAC,OAAO,GAAG,sBAAsB,KAAK,gBAAgB,GAAG,CAAC,OAAO,EAAE,CAAC;QACvE,MAAM,GAAG,CAAC;KACX;AACH,CAAC,CAAA;AAED,SAAgB,iBAAiB,CAAC,KAAK;IACrC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACzB,MAAM,IAAI,SAAS,CAAC,wBAAwB,CAAC,CAAC;KAC/C;IACD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAC9D,OAAO,KAAK,CAAC;AACf,CAAC;AAND,8CAMC;AAED,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;IACrC,IAAI;QACF,IAAI,CAAC,CAAC,KAAK,YAAY,oBAAS,CAAC,EAAE;YACjC,MAAM,IAAI,SAAS,CAAC,kFAAkF,CAAC,CAAC;SACzG;KACF;IAAC,OAAO,GAAG,EAAE;QACZ,GAAG,CAAC,OAAO,GAAG,uBAAuB,KAAK,gBAAgB,GAAG,CAAC,OAAO,EAAE,CAAC;QACxE,MAAM,GAAG,CAAC;KACX;AACH,CAAC,CAAC;AAEF,SAAgB,cAAc,CAAC,MAAM;IACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QAC1B,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;KACrE;IACD,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5D,OAAO,MAAM,CAAC;AAChB,CAAC;AAND,wCAMC;AAED,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;IACnC,IAAI;QACF,IAAA,2BAAgB,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAA,uBAAY,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;YAC7B,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC7B;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;YAC5B,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC/B;KACF;IAAC,OAAO,GAAG,EAAE;QACZ,GAAG,CAAC,OAAO,GAAG,iBAAiB,KAAK,gBAAgB,GAAG,CAAC,OAAO,EAAE,CAAC;QAClE,MAAM,GAAG,CAAC;KACX;AACH,CAAC,CAAA;AAED,SAAgB,aAAa,CAAC,KAAK,GAAG,EAAE;IACtC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACzB,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAC;KACvD;IACD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAC1D,OAAO,KAAK,CAAC;AACf,CAAC;AAND,sCAMC;AAED,SAAgB,YAAY,CAAC,IAAI;IAC/B,IAAI,IAAI,KAAK,SAAS,EAAE;QACtB,OAAO,IAAI,CAAC;KACb;IAED,IAAI,CAAC,CAAC,IAAI,YAAY,iBAAI,CAAC,EAAE;QAC3B,MAAM,IAAI,SAAS,CAAC,gDAAgD,CAAC,CAAC;KACvE;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAVD,oCAUC;AAED,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;IACzC,IAAI;QACF,IAAA,2BAAgB,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,UAAU,EAAE;YACzC,MAAM,IAAI,SAAS,CAAC,oCAAoC,CAAC,CAAC;SAC3D;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;YAC3B,IAAA,2BAAgB,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC7B;KACF;IAAC,OAAO,GAAG,EAAE;QACZ,GAAG,CAAC,OAAO,GAAG,wBAAwB,KAAK,gBAAgB,GAAG,CAAC,OAAO,EAAE,CAAC;QACzE,MAAM,GAAG,CAAC;KACX;AACH,CAAC,CAAC;AAEF,SAAgB,mBAAmB,CAAC,KAAK;IACvC,IAAI,KAAK,KAAK,SAAS,EAAE;QACvB,OAAO,EAAE,CAAC;KACX;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACzB,MAAM,IAAI,SAAS,CAAC,wBAAwB,CAAC,CAAC;KAC/C;IAED,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAChE,OAAO,KAAK,CAAC;AACf,CAAC;AAXD,kDAWC;AAED,SAAgB,eAAe,CAAC,OAAO;IACrC,OAAO,OAAO,CAAC;AACjB,CAAC;AAFD,0CAEC;AAED,SAAgB,cAAc,CAAC,MAAM;IACnC,OAAO,MAAM,CAAC;AAChB,CAAC;AAFD,wCAEC;AAED;;;;;;;GAOG;AACH,SAAgB,0BAA0B,CAAC,kBAAkB;IAC3D,IAAI,kBAAkB,KAAK,SAAS,IAAI,CAAC,CAAC,kBAAkB,YAAY,QAAQ,CAAC,EAAE;QACjF,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;KAC/D;IAED,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAND,gEAMC;AAED,SAAgB,qBAAqB,CAAC,KAAK,EAAE,YAAY,GAAG,EAAE;IAC5D,uEAAuE;IACvE,uCAAuC;IACvC,MAAM,UAAU,GAAG,EAAE,CAAC;IAEtB,IAAI,KAAK,KAAK,SAAS,EAAE;QACvB,OAAO,YAAY,CAAC;KACrB;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;QAC5B,MAAM,IAAI,SAAS,CAAC,kCAAkC,CAAC,CAAC;KACzD;IACD,IAAI,KAAK,GAAG,UAAU,EAAE;QACtB,MAAM,IAAI,UAAU,CAAC,kCAAkC,UAAU,EAAE,CAAC,CAAC;KACtE;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAhBD,sDAgBC;AAED,SAAgB,oBAAoB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,GAAG,EAAE;IAClE,MAAM,SAAS,GAAG,IAAI,CAAC;IAEvB,IAAI,KAAK,KAAK,SAAS,EAAE;QACvB,OAAO,YAAY,CAAC;KACrB;IAED,MAAM,WAAW,GAAG,eAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE;QAClC,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;KACrE;IACD,IAAI,WAAW,GAAG,SAAS,EAAE;QAC3B,MAAM,IAAI,UAAU,CAAC,iCAAiC,SAAS,WAAW,eAAK,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;KACvG;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAhBD,oDAgBC;AAED,SAAgB,0BAA0B,CAAC,SAAS;IAClD,IAAI,SAAS,KAAK,SAAS,EAAE;QAC3B,OAAO,mBAAmB,CAAC,IAAI,EAAE,CAAC;KACnC;IAED,IAAI,CAAC,CAAC,SAAS,YAAY,QAAQ,CAAC,EAAE;QACpC,MAAM,IAAI,SAAS,CAAC,uCAAuC,CAAC,CAAC;KAC9D;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAVD,gEAUC;AAED;;;;;;;GAOG;AACH,SAAwB,MAAM,CAAC,MAAM,GAAG,EAAE;IACxC,MAAM,MAAM,GAAG;QACb,qBAAqB;QACrB,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC/C,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YACjC,OAAO,EAAE,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC;SAC3C,CAAC,CAAC;QAEH,2DAA2D;QAC3D,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC;QAE3C,UAAU;QACV,OAAO,EAAE,qBAAqB,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC3D,IAAI,EAAE,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC;YACvC,MAAM,EAAE,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC;YAC7C,MAAM,EAAE,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC;YAC7C,GAAG,EAAE,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC;YACpC,KAAK,EAAE,oBAAoB,CAAC,OAAO,CAAC,KAAK,CAAC;YAC1C,UAAU,EAAE,yBAAyB,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC;YAC9D,cAAc,EAAE,6BAA6B,CAAC,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC;SAChF,CAAC,CAAC;QAEH,sBAAsB;QACtB,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC;QAElC,QAAQ;QACR,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC;QAElC,OAAO;QACP,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC;QAE/B,QAAQ;QACR,KAAK,EAAE,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC;QAExC,UAAU;QACV,OAAO,EAAE,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC;QAExC,SAAS;QACT,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC;QAErC,uBAAuB;QACvB,kBAAkB,EAAE,0BAA0B,CAAC,MAAM,CAAC,kBAAkB,CAAC;QAEzE,eAAe;QACf,aAAa,EAAE,qBAAqB,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,CAAC;QAC9D,YAAY,EAAE,oBAAoB,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,GAAG,EAAE,CAAC;QAElE,uBAAuB;QACvB,kBAAkB,EAAE,0BAA0B,CAAC,MAAM,CAAC,kBAAkB,CAAC;KAC1E,CAAC;IAEF,0BAA0B;IAC1B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtB,OAAO,MAAM,CAAC;AAChB,CAAC;AAtDD,yBAsDC"}
@@ -60,7 +60,7 @@ function configure(config = {}) {
60
60
  }, pages = [], plan = null, hooks = [], plugins = [], events = [], i18n = {
61
61
  dirs: [],
62
62
  locales: ['en', 'cy'],
63
- }, helmetConfigurator = undefined, formMaxParams, formMaxBytes, } = ingestedConfig;
63
+ }, helmetConfigurator = undefined, formMaxParams, formMaxBytes, contextIdGenerator, } = ingestedConfig;
64
64
  // Prepare all page hooks so they are prefixed with the `journey.` scope.
65
65
  pages.forEach((page) => {
66
66
  var _a;
@@ -104,6 +104,7 @@ function configure(config = {}) {
104
104
  const dataMiddleware = (0, data_js_1.default)({
105
105
  plan,
106
106
  events,
107
+ contextIdGenerator,
107
108
  });
108
109
  // Prepare form middleware and its constituent parts
109
110
  // These are used for any forms, including waypoint page forms.
@@ -1 +1 @@
1
- {"version":3,"file":"configure.js","sourceRoot":"","sources":["../../src/lib/configure.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"configure.js","sourceRoot":"","sources":["../../src/lib/configure.js"],"names":[],"mappings":";;;;;AAAA,qDAA8C;AAC9C,+BAA+B;AAC/B,mCAAuC;AACvC,kEAAgD;AAChD,gEAAoC;AAEpC,4FAAgE;AAChE,gEAAqC;AACrC,0DAAsC;AAEtC,oEAA+C;AAC/C,0EAAqD;AACrD,sEAAiD;AAEjD,kEAAwD;AACxD,oEAA0D;AAE1D,0EAAgE;AAChE,oEAA0D;AAC1D,oEAA0D;AAE1D,kFAAuE;AACvE,oEAA0D;AAE1D;;;GAGG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH;;;;;;GAMG;AACH,SAAwB,SAAS,CAAC,MAAM,GAAG,EAAE;;IAC3C,wEAAwE;IACxE,uBAAuB;IACvB,CAAC,MAAA,MAAM,CAAC,OAAO,mCAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QACxC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,iBAAiB;IACjB,MAAM,cAAc,GAAG,IAAA,mCAAqB,EAAC,MAAM,CAAC,CAAC;IACrD,MAAM,EACJ,QAAQ,EACR,KAAK,GAAG,EAAE,EACV,OAAO,GAAG;QACR,MAAM,EAAE,QAAQ;QAChB,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,KAAK;QACb,GAAG,EAAE,IAAI;QACT,cAAc,EAAE,IAAI;QACpB,UAAU,EAAE,GAAG;QACf,KAAK,EAAE,SAAS;KACjB,EACD,KAAK,GAAG,EAAE,EACV,IAAI,GAAG,IAAI,EACX,KAAK,GAAG,EAAE,EACV,OAAO,GAAG,EAAE,EACZ,MAAM,GAAG,EAAE,EACX,IAAI,GAAG;QACL,IAAI,EAAE,EAAE;QACR,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;KACtB,EACD,kBAAkB,GAAG,SAAS,EAC9B,aAAa,EACb,YAAY,EACZ,kBAAkB,GACnB,GAAG,cAAc,CAAC;IAEnB,yEAAyE;IACzE,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;;QACrB,iEAAiE;QACjE,CAAC,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,mCAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,8DAA8D;IAC9D,6FAA6F;IAC7F,MAAM,WAAW,GAAG,IAAA,qBAAQ,EAAC;QAC3B,KAAK,EAAE;YACL,GAAG,KAAK;YACR,IAAA,cAAO,EAAC,qBAAO,EAAE,aAAa,CAAC;YAC/B,IAAA,cAAO,EAAC,IAAA,sBAAa,EAAC,qBAAO,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC;SACpE;KACF,CAAC,CAAC;IAEH,+BAA+B;IAC/B,0EAA0E;IAC1E,wCAAwC;IACxC,MAAM,aAAa,GAAG,IAAA,gBAAoB,EAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACnE,MAAM,cAAc,GAAG,IAAA,iBAAqB,GAAE,CAAC;IAE/C,iEAAiE;IACjE,MAAM,sBAAsB,GAAG,IAAA,uBAAmB,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnE,MAAM,iBAAiB,GAAG,IAAA,oBAAwB,EAAC;QACjD,sBAAsB;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,KAAK,EAAE,MAAA,OAAO,CAAC,KAAK,mCAAI,IAAI,6BAAW,EAAE;KAC1C,CAAC,CAAC;IACH,MAAM,cAAc,GAAG,IAAA,iBAAqB,EAAC;QAC3C,WAAW,EAAE;YACX,yDAAyD;YACzD,IAAA,cAAO,EAAC,qBAAO,EAAE,gBAAgB,CAAC;YAClC,GAAG,IAAI,CAAC,IAAI;SACb;QACD,SAAS,EAAE,IAAI,CAAC,OAAO;KACxB,CAAC,CAAC;IACH,MAAM,cAAc,GAAG,IAAA,iBAAqB,EAAC;QAC3C,IAAI;QACJ,MAAM;QACN,kBAAkB;KACnB,CAAC,CAAC;IAEH,oDAAoD;IACpD,+DAA+D;IAC/D,MAAM,oBAAoB,GAAG,IAAA,wBAA2B,EAAC;QACvD,aAAa;QACb,YAAY;KACb,CAAC,CAAC;IACH,MAAM,cAAc,GAAG,IAAA,iBAAqB,GAAE,CAAC;IAE/C,iDAAiD;IACjD,MAAM,YAAY,GAAG,IAAA,mBAAY,GAAE,CAAC;IAEpC,oDAAoD;IACpD,MAAM,eAAe,GAAG,IAAA,sBAAe,EAAC;QACtC,UAAU,EAAE,OAAO,CAAC,GAAG;KACxB,CAAC,CAAC;IAEH,0EAA0E;IAC1E,MAAM,aAAa,GAAG,IAAA,oBAAa,EAAC;QAClC,WAAW,EAAE,KAAK;QAClB,KAAK;QACL,IAAI;QACJ,cAAc;KACf,CAAC,CAAC;IAEH,+BAA+B;IAC/B,MAAM,KAAK,GAAG,IAAA,kBAAY,EAAC;QACzB,WAAW;QACX,QAAQ;QACR,IAAI;QACJ,YAAY;QACZ,eAAe;QACf,aAAa;QACb,aAAa;QACb,iBAAiB;QACjB,cAAc;QACd,oBAAoB;QACpB,cAAc;QACd,cAAc;KACf,CAAC,CAAC;IAEH,+BAA+B;IAC/B,MAAM,YAAY,GAAG;QACnB,2EAA2E;QAC3E,wEAAwE;QACxE,WAAW;QAEX,oEAAoE;QACpE,aAAa;QACb,cAAc;QAEd,iFAAiF;QACjF,YAAY;QACZ,eAAe;QACf,aAAa;QAEb,iEAAiE;QACjE,cAAc;QAEd,mBAAmB;QACnB,2EAA2E;QAC3E,sBAAsB;QACtB,iBAAiB;QACjB,oBAAoB;QACpB,cAAc;QACd,cAAc;QAEd,iBAAiB;QACjB,KAAK;QAEL,kBAAkB;QAClB,MAAM,EAAE,cAAc;KACvB,CAAC;IAEF,wBAAwB;IACxB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;IAExF,yBAAyB;IACzB,OAAO,YAAY,CAAC;AACtB,CAAC;AAlKD,4BAkKC"}
@@ -0,0 +1,27 @@
1
+ export type ContextIdGenerator = import('../casa.js').ContextIdGenerator;
2
+ /**
3
+ * @typedef {import('../casa.js').ContextIdGenerator} ContextIdGenerator
4
+ */
5
+ /**
6
+ * Creates an instance of a UUID generator.
7
+ *
8
+ * @returns {ContextIdGenerator} Generator function
9
+ */
10
+ export function uuid(): ContextIdGenerator;
11
+ /**
12
+ * Returns a generator that returns the next incremental integer in a sequence.
13
+ *
14
+ * This generator does not take into account the removal of any contexts from
15
+ * session that were previously assigned a sequential ID. This means that IDs
16
+ * will be re-used when they are freed up.
17
+ *
18
+ * @returns {ContextIdGenerator} Generator function
19
+ */
20
+ export function sequentialInteger(): ContextIdGenerator;
21
+ export function shortGuid({ length, prefix, pool, }?: {
22
+ length?: number | undefined;
23
+ prefix?: string | undefined;
24
+ pool?: string | undefined;
25
+ }): ({ reservedIds }: {
26
+ reservedIds: any;
27
+ }) => string;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.shortGuid = exports.sequentialInteger = exports.uuid = void 0;
4
+ /* eslint-disable import/no-cycle */
5
+ const node_crypto_1 = require("node:crypto");
6
+ /**
7
+ * @typedef {import('../casa.js').ContextIdGenerator} ContextIdGenerator
8
+ */
9
+ /**
10
+ * Creates an instance of a UUID generator.
11
+ *
12
+ * @returns {ContextIdGenerator} Generator function
13
+ */
14
+ const uuid = () => () => (0, node_crypto_1.randomUUID)();
15
+ exports.uuid = uuid;
16
+ /**
17
+ * Returns a generator that returns the next incremental integer in a sequence.
18
+ *
19
+ * This generator does not take into account the removal of any contexts from
20
+ * session that were previously assigned a sequential ID. This means that IDs
21
+ * will be re-used when they are freed up.
22
+ *
23
+ * @returns {ContextIdGenerator} Generator function
24
+ */
25
+ const sequentialInteger = () => ({ reservedIds }) => {
26
+ const contextIds = Array.from(reservedIds).sort();
27
+ if (!contextIds.length) {
28
+ return '1';
29
+ }
30
+ // Find the first numeric ID that we can increment
31
+ let lastInSequence;
32
+ do {
33
+ lastInSequence = Number.parseInt(contextIds.pop(), 10);
34
+ } while (contextIds.length && Number.isNaN(lastInSequence));
35
+ return String(!Number.isNaN(lastInSequence) ? lastInSequence + 1 : 1);
36
+ };
37
+ exports.sequentialInteger = sequentialInteger;
38
+ const shortGuid = ({ length = 5, prefix = '', pool = 'abcdefhkmnprtwxy346789', } = {}) => ({ reservedIds }) => {
39
+ // Ambiguous characters excluded
40
+ const poolSize = pool.length;
41
+ const maxAttempts = 10;
42
+ let attempts = maxAttempts;
43
+ let id;
44
+ do {
45
+ id = Array(length).fill(0).map(() => pool.charAt(Math.floor(Math.random() * poolSize))).join('');
46
+ attempts--;
47
+ } while (attempts > 0 && reservedIds.includes(id));
48
+ if (attempts === 0) {
49
+ throw new Error(`Failed to generate GUID after ${maxAttempts} iterations`);
50
+ }
51
+ return `${prefix}${id}`;
52
+ };
53
+ exports.shortGuid = shortGuid;
54
+ //# sourceMappingURL=context-id-generators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-id-generators.js","sourceRoot":"","sources":["../../src/lib/context-id-generators.js"],"names":[],"mappings":";;;AAAA,oCAAoC;AACpC,6CAAyC;AAEzC;;GAEG;AAEH;;;;GAIG;AACH,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,IAAA,wBAAU,GAAE,CAAC;AAuDpC,oBAAI;AArDN;;;;;;;;GAQG;AACH,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE;IAClD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;IAElD,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;QACtB,OAAO,GAAG,CAAC;KACZ;IAED,kDAAkD;IAClD,IAAI,cAAc,CAAC;IACnB,GAAG;QACD,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;KACxD,QAAQ,UAAU,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;IAE5D,OAAO,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC;AA+BA,8CAAiB;AA7BnB,MAAM,SAAS,GAAG,CAAC,EACjB,MAAM,GAAG,CAAC,EACV,MAAM,GAAG,EAAE,EACX,IAAI,GAAG,wBAAwB,GAChC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE;IAC7B,gCAAgC;IAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;IAE7B,MAAM,WAAW,GAAG,EAAE,CAAC;IACvB,IAAI,QAAQ,GAAG,WAAW,CAAC;IAC3B,IAAI,EAAE,CAAC;IAEP,GAAG;QACD,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjG,QAAQ,EAAE,CAAC;KACZ,QAAQ,QAAQ,GAAG,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;IAEnD,IAAI,QAAQ,KAAK,CAAC,EAAE;QAClB,MAAM,IAAI,KAAK,CAAC,iCAAiC,WAAW,aAAa,CAAC,CAAC;KAC5E;IAED,OAAO,GAAG,MAAM,GAAG,EAAE,EAAE,CAAC;AAC1B,CAAC,CAAA;AAQC,8BAAS"}
@@ -56,7 +56,8 @@ class Range extends ValidatorFactory_js_1.default {
56
56
  // treat an empty string as undefined
57
57
  // when user submits empty form, it stores an empty string
58
58
  if (value !== '' && value !== undefined) {
59
- // add to custom validator docs to ensure not to return a falsy value as it doesn't show on screen
59
+ // add to custom validator docs to ensure not to return a falsy value as
60
+ // it doesn't show on screen
60
61
  return (_a = (0, utils_js_1.coerceInputToInteger)(value)) === null || _a === void 0 ? void 0 : _a.toString();
61
62
  }
62
63
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"range.js","sourceRoot":"","sources":["../../../src/lib/validators/range.js"],"names":[],"mappings":";AAAA,2CAA2C;;;;;AAE3C,iFAAsD;AACtD,+EAAoD;AACpD,0CAAmD;AAEnD;;;GAGG;AAEH;;;;;;GAMG;AAEH;;;;;;;GAOG;AACH,MAAqB,KAAM,SAAQ,6BAAgB;IAAnD;;QACE,SAAI,GAAG,OAAO,CAAC;IAyCjB,CAAC;IAvCC,QAAQ,CAAC,UAAU,EAAE,WAAW,GAAG,EAAE;QACnC,MAAM,EACJ,WAAW,GAAG;YACZ,MAAM,EAAE,kCAAkC;YAC1C,OAAO,EAAE,mCAAmC;SAC7C,EACD,WAAW,GAAG;YACZ,MAAM,EAAE,kCAAkC;YAC1C,OAAO,EAAE,mCAAmC;SAC7C,EACD,GAAG,GAAG,MAAM,CAAC,SAAS,EACtB,GAAG,GAAG,MAAM,CAAC,SAAS,GACvB,GAAG,IAAI,CAAC,MAAM,CAAC;QAEhB,IAAI,QAAQ,CAAC;QACb,IAAI,KAAK,GAAG,IAAI,CAAC;QAEjB,IAAI,UAAU,GAAG,GAAG,EAAE;YACpB,KAAK,GAAG,KAAK,CAAC;YACd,QAAQ,GAAG,WAAW,CAAC;SACxB;QAED,IAAI,UAAU,GAAG,GAAG,EAAE;YACpB,KAAK,GAAG,KAAK,CAAC;YACd,QAAQ,GAAG,WAAW,CAAC;SACxB;QAED,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,4BAAe,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,QAAQ,CAAC,KAAK;;QACZ,qCAAqC;QACrC,0DAA0D;QAC1D,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,SAAS,EAAE;YACvC,kGAAkG;YAClG,OAAO,MAAA,IAAA,+BAAoB,EAAC,KAAK,CAAC,0CAAE,QAAQ,EAAE,CAAC;SAChD;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AA1CD,wBA0CC"}
1
+ {"version":3,"file":"range.js","sourceRoot":"","sources":["../../../src/lib/validators/range.js"],"names":[],"mappings":";AAAA,2CAA2C;;;;;AAE3C,iFAAsD;AACtD,+EAAoD;AACpD,0CAAmD;AAEnD;;;GAGG;AAEH;;;;;;GAMG;AAEH;;;;;;;GAOG;AACH,MAAqB,KAAM,SAAQ,6BAAgB;IAAnD;;QACE,SAAI,GAAG,OAAO,CAAC;IA0CjB,CAAC;IAxCC,QAAQ,CAAC,UAAU,EAAE,WAAW,GAAG,EAAE;QACnC,MAAM,EACJ,WAAW,GAAG;YACZ,MAAM,EAAE,kCAAkC;YAC1C,OAAO,EAAE,mCAAmC;SAC7C,EACD,WAAW,GAAG;YACZ,MAAM,EAAE,kCAAkC;YAC1C,OAAO,EAAE,mCAAmC;SAC7C,EACD,GAAG,GAAG,MAAM,CAAC,SAAS,EACtB,GAAG,GAAG,MAAM,CAAC,SAAS,GACvB,GAAG,IAAI,CAAC,MAAM,CAAC;QAEhB,IAAI,QAAQ,CAAC;QACb,IAAI,KAAK,GAAG,IAAI,CAAC;QAEjB,IAAI,UAAU,GAAG,GAAG,EAAE;YACpB,KAAK,GAAG,KAAK,CAAC;YACd,QAAQ,GAAG,WAAW,CAAC;SACxB;QAED,IAAI,UAAU,GAAG,GAAG,EAAE;YACpB,KAAK,GAAG,KAAK,CAAC;YACd,QAAQ,GAAG,WAAW,CAAC;SACxB;QAED,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,4BAAe,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,QAAQ,CAAC,KAAK;;QACZ,qCAAqC;QACrC,0DAA0D;QAC1D,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,SAAS,EAAE;YACvC,wEAAwE;YACxE,4BAA4B;YAC5B,OAAO,MAAA,IAAA,+BAAoB,EAAC,KAAK,CAAC,0CAAE,QAAQ,EAAE,CAAC;SAChD;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AA3CD,wBA2CC"}
@@ -1,4 +1,5 @@
1
- export default function dataMiddleware({ plan, events, }: {
1
+ export default function dataMiddleware({ plan, events, contextIdGenerator, }: {
2
2
  plan: any;
3
3
  events: any;
4
+ contextIdGenerator: any;
4
5
  }): ((req: any, res: any, next: any) => void)[];
@@ -19,7 +19,7 @@ const editOrigin = (req) => {
19
19
  }
20
20
  return '';
21
21
  };
22
- function dataMiddleware({ plan, events, }) {
22
+ function dataMiddleware({ plan, events, contextIdGenerator, }) {
23
23
  return [
24
24
  (req, res, next) => {
25
25
  /* ------------------------------------------------ Request decorations */
@@ -34,6 +34,12 @@ function dataMiddleware({ plan, events, }) {
34
34
  editMode: (has(req === null || req === void 0 ? void 0 : req.query, 'edit') && has(req === null || req === void 0 ? void 0 : req.query, 'editorigin')) || (has(req === null || req === void 0 ? void 0 : req.body, 'edit') && has(req === null || req === void 0 ? void 0 : req.body, 'editorigin')), editOrigin: editOrigin(req) });
35
35
  // Grab chosen language from session
36
36
  req.casa.journeyContext.nav.language = req.session.language;
37
+ // Context ID generator
38
+ Object.defineProperty(req, JourneyContext_js_1.default.ID_GENERATOR_REQ_KEY, {
39
+ value: contextIdGenerator,
40
+ enumerable: false,
41
+ writable: false,
42
+ });
37
43
  /* ------------------------------------------------- Template variables */
38
44
  // Capture mount URL that will be used in generating all browser URLs
39
45
  const mountUrl = (0, utils_js_1.validateUrlPath)(`${req.baseUrl}/`.replace(/\/+/g, '/'));
@@ -1 +1 @@
1
- {"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/middleware/data.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/middleware/data.js"],"names":[],"mappings":"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"}
@@ -28,7 +28,7 @@ exports.default = ({ waypoint, fields = [], }) => [
28
28
  (req, res, next) => {
29
29
  // Store a copy of the journey context before modifying it. This is useful
30
30
  // for any comparison work that may be done in subsequent middleware.
31
- req.casa.archivedJourneyContext = JourneyContext_js_1.default.fromContext(req.casa.journeyContext);
31
+ req.casa.archivedJourneyContext = JourneyContext_js_1.default.fromContext(req.casa.journeyContext, req);
32
32
  // Ignore data for any non-persistent fields
33
33
  // ESLint disabled as `fields`, `i` and `name` are dev-controlled
34
34
  /* eslint-disable security/detect-object-injection */
@@ -1 +1 @@
1
- {"version":3,"file":"gather-fields.js","sourceRoot":"","sources":["../../src/middleware/gather-fields.js"],"names":[],"mappings":";AAAA,wEAAwE;AACxE,iCAAiC;AACjC,wDAAwD;AACxD,mEAAmE;;;;;AAEnE,iFAAsD;AACtD,sDAA2D;AAE3D;;;GAGG;AAEH;;;;;;;;;;GAUG;AACH,kBAAe,CAAC,EACd,QAAQ,EACR,MAAM,GAAG,EAAE,GACZ,EAAE,EAAE,CAAC;IACJ,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACjB,0EAA0E;QAC1E,qEAAqE;QACrE,GAAG,CAAC,IAAI,CAAC,sBAAsB,GAAG,2BAAc,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEtF,4CAA4C;QAC5C,iEAAiE;QACjE,qDAAqD;QACrD,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC7C,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE;gBACxE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aAC/D;SACF;QACD,oDAAoD;QAEpD,wEAAwE;QACxE,2EAA2E;QAC3E,0EAA0E;QAC1E,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QACjE,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAC;QAC/D,2BAAc,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE;YAC9D,QAAQ,EAAE;gBACR,gBAAgB,EAAE,mCAAoB;aACvC;SACF,CAAC,CAAC;QAEH,IAAI,EAAE,CAAC;IACT,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"gather-fields.js","sourceRoot":"","sources":["../../src/middleware/gather-fields.js"],"names":[],"mappings":";AAAA,wEAAwE;AACxE,iCAAiC;AACjC,wDAAwD;AACxD,mEAAmE;;;;;AAEnE,iFAAsD;AACtD,sDAA2D;AAE3D;;;GAGG;AAEH;;;;;;;;;;GAUG;AACH,kBAAe,CAAC,EACd,QAAQ,EACR,MAAM,GAAG,EAAE,GACZ,EAAE,EAAE,CAAC;IACJ,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACjB,0EAA0E;QAC1E,qEAAqE;QACrE,GAAG,CAAC,IAAI,CAAC,sBAAsB,GAAG,2BAAc,CAAC,WAAW,CAC1D,GAAG,CAAC,IAAI,CAAC,cAAc,EACvB,GAAG,CACJ,CAAC;QAEF,4CAA4C;QAC5C,iEAAiE;QACjE,qDAAqD;QACrD,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC7C,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE;gBACxE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aAC/D;SACF;QACD,oDAAoD;QAEpD,wEAAwE;QACxE,2EAA2E;QAC3E,0EAA0E;QAC1E,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QACjE,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAC;QAC/D,2BAAc,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE;YAC9D,QAAQ,EAAE;gBACR,gBAAgB,EAAE,mCAAoB;aACvC;SACF,CAAC,CAAC;QAEH,IAAI,EAAE,CAAC;IACT,CAAC;CACF,CAAC"}
@@ -29,7 +29,7 @@ exports.default = ({ waypoint, fields = [], }) => {
29
29
  }
30
30
  }
31
31
  /* eslint-enable security/detect-object-injection */
32
- const journeyContext = JourneyContext_js_1.default.fromContext(req.casa.journeyContext);
32
+ const journeyContext = JourneyContext_js_1.default.fromContext(req.casa.journeyContext, req);
33
33
  journeyContext.setDataForPage(waypoint, prunedBody);
34
34
  // Second, prune any fields that do not pass the validation conditional,
35
35
  // and process those that do.
@@ -1 +1 @@
1
- {"version":3,"file":"sanitise-fields.js","sourceRoot":"","sources":["../../src/middleware/sanitise-fields.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sanitise-fields.js","sourceRoot":"","sources":["../../src/middleware/sanitise-fields.js"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ export const { ValidationError } = casa;
10
10
  export const { ValidatorFactory } = casa;
11
11
  export const { configure } = casa;
12
12
  export const { constants } = casa;
13
+ export const { contextIdGenerators } = casa;
13
14
  export const { endSession } = casa;
14
15
  export const { field } = casa;
15
16
  export const { nunjucksFilters } = casa;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dwp/govuk-casa",
3
- "version": "8.11.0",
3
+ "version": "8.12.0",
4
4
  "description": "A framework for building GOVUK Collect-And-Submit-Applications",
5
5
  "repository": {
6
6
  "type": "git",
@@ -56,48 +56,47 @@
56
56
  "deepmerge": "4.3.1",
57
57
  "express": "4.18.2",
58
58
  "express-session": "1.17.3",
59
- "govuk-frontend": "4.6.0",
59
+ "govuk-frontend": "4.7.0",
60
60
  "helmet": "7.0.0",
61
- "i18next": "22.5.0",
62
- "i18next-http-middleware": "3.3.1",
61
+ "i18next": "23.2.10",
62
+ "i18next-http-middleware": "3.3.2",
63
63
  "js-yaml": "4.1.0",
64
64
  "lodash": "4.17.21",
65
65
  "luxon": "3.3.0",
66
66
  "nunjucks": "3.2.4",
67
67
  "path-to-regexp": "6.2.1",
68
- "uuid": "9.0.0",
69
68
  "validator": "13.9.0"
70
69
  },
71
70
  "devDependencies": {
72
- "@babel/core": "7.22.1",
73
- "@babel/eslint-parser": "7.21.8",
74
- "@babel/preset-env": "7.22.2",
75
- "@ckeditor/jsdoc-plugins": "37.0.1",
76
- "@commitlint/config-conventional": "17.6.3",
77
- "@dwp/casa-spiderplan": "3.1.1",
78
- "@dwp/casa-spiderplan-a11y-plugin": "0.1.12",
79
- "@dwp/casa-spiderplan-zap-plugin": "0.1.8",
71
+ "@babel/core": "7.22.8",
72
+ "@babel/eslint-parser": "7.22.7",
73
+ "@babel/preset-env": "7.22.7",
74
+ "@ckeditor/jsdoc-plugins": "38.1.1",
75
+ "@commitlint/config-conventional": "17.6.6",
76
+ "@dwp/casa-spiderplan": "3.1.2",
77
+ "@dwp/casa-spiderplan-a11y-plugin": "0.1.13",
78
+ "@dwp/casa-spiderplan-zap-plugin": "0.1.9",
80
79
  "@dwp/eslint-config-base": "6.1.1",
81
80
  "@types/express": "4.17.17",
82
- "@types/node": "18.16.16",
83
- "@types/nunjucks": "3.2.2",
84
- "c8": "7.13.0",
81
+ "@types/node": "20.4.1",
82
+ "@types/nunjucks": "3.2.3",
83
+ "c8": "8.0.0",
85
84
  "chai": "4.3.7",
86
85
  "cheerio": "1.0.0-rc.12",
87
- "commitlint": "17.6.3",
86
+ "commitlint": "17.6.6",
88
87
  "docdash": "2.0.1",
89
- "eslint": "8.41.0",
88
+ "eslint": "8.44.0",
90
89
  "eslint-plugin-no-unsafe-regex": "1.0.0",
91
90
  "eslint-plugin-security": "1.7.1",
92
91
  "eslint-plugin-sonarjs": "0.19.0",
93
- "fast-check": "3.9.0",
92
+ "fast-check": "3.11.0",
94
93
  "jsdoc": "4.0.2",
95
94
  "jsdoc-tsimport-plugin": "1.0.5",
96
95
  "mocha": "10.2.0",
97
- "sass": "1.62.1",
98
- "sinon": "15.1.0",
96
+ "sass": "1.63.6",
97
+ "sinon": "15.2.0",
99
98
  "sinon-chai": "3.7.0",
100
99
  "supertest": "6.3.3",
101
- "typescript": "5.0.4"
100
+ "typescript": "5.1.6"
102
101
  }
103
102
  }
package/src/casa.js CHANGED
@@ -11,6 +11,7 @@ import waypointUrl from './lib/waypoint-url.js';
11
11
  import endSession from './lib/end-session.js';
12
12
  import * as nunjucksFilters from './lib/nunjucks-filters.js';
13
13
  import * as constants from './lib/constants.js';
14
+ import * as contextIdGenerators from './lib/context-id-generators.js';
14
15
 
15
16
  /** @module @dwp/govuk-casa */
16
17
  export {
@@ -32,6 +33,9 @@ export {
32
33
 
33
34
  // Constants
34
35
  constants,
36
+
37
+ // Context ID generators
38
+ contextIdGenerators,
35
39
  };
36
40
 
37
41
  /* ----------------------------------------------------------------- Typedefs */
@@ -160,6 +164,7 @@ export {
160
164
  * @property {HelmetConfigurator} [helmetConfigurator] Helmet configuration manipulator function
161
165
  * @property {number} [formMaxParams=25] Max number of form parameters to ingest
162
166
  * @property {number|string} [formMaxBytes="50KB"] Max total form payload size to ingest
167
+ * @property {ContextIdGenerator} [contextIdGenerator] Custom context ID generator
163
168
  */
164
169
 
165
170
  /**
@@ -330,3 +335,24 @@ export {
330
335
  * @property {any} [nav] Navigation meta
331
336
  * @property {any} [identity] Identity meta
332
337
  */
338
+
339
+ /**
340
+ * @typedef ContextIdGeneratorParams
341
+ * @property {object} args Arguments
342
+ * @property {import('express').Request} args.req Request
343
+ * @property {[string]} args.reservedIds List of IDs already in use in session or request
344
+ */
345
+
346
+ /**
347
+ * Generates a GUID for use as a journey context ID. This ID must not clash with
348
+ * any other context IDs in the given session.
349
+ *
350
+ * The resulting ID must match these criteria:
351
+ * - A string
352
+ * - Between 1 and 64 characters
353
+ * - Contain only the characters a-z, 0-9, -
354
+ *
355
+ * @callback ContextIdGenerator
356
+ * @param {ContextIdGeneratorParams} params Parameters
357
+ * @returns {string} A newly generated GUID
358
+ */
@@ -1,3 +1,4 @@
1
+ /* eslint-disable import/no-cycle */
1
2
  /**
2
3
  * Represents the state of a user's journey through the Plan. It contains
3
4
  * information about:
@@ -6,11 +7,11 @@
6
7
  * - Validation errors on that data
7
8
  * - Navigation information about how the user got where they are.
8
9
  */
9
- import { v4 as uuidv4, validate as uuidValidate } from 'uuid';
10
10
  import lodash from 'lodash';
11
11
  import ValidationError from './ValidationError.js';
12
12
  import logger from './logger.js';
13
13
  import { notProto } from './utils.js';
14
+ import { uuid as uuidGenerator } from './context-id-generators.js';
14
15
 
15
16
  const {
16
17
  cloneDeep, isPlainObject, isObject, has, isEqual,
@@ -18,6 +19,8 @@ const {
18
19
 
19
20
  const log = logger('lib:journey-context');
20
21
 
22
+ const uuid = uuidGenerator();
23
+
21
24
  /**
22
25
  * @access private
23
26
  * @typedef {import('../casa').ContextEventUserInfo} ContextEventUserInfo
@@ -75,6 +78,16 @@ export default class JourneyContext {
75
78
 
76
79
  static DEFAULT_CONTEXT_ID = 'default';
77
80
 
81
+ /**
82
+ * @type {symbol}
83
+ */
84
+ static ID_GENERATOR_REQ_LOG = Symbol('generatedContextIds');
85
+
86
+ /**
87
+ * @type {symbol}
88
+ */
89
+ static ID_GENERATOR_REQ_KEY = Symbol('generateContextId');
90
+
78
91
  /**
79
92
  * Constructor.
80
93
  *
@@ -476,12 +489,15 @@ export default class JourneyContext {
476
489
  /**
477
490
  * Construct a new ephemeral JourneyContext instance with a unique ID.
478
491
  *
492
+ * Note: In later versions of CASA, the `req` property will be mandatory.
493
+ *
494
+ * @param {ExpressRequest} [req] Request session
479
495
  * @returns {JourneyContext} Constructed JourneyContext instance
480
496
  */
481
- static createEphemeralContext() {
497
+ static createEphemeralContext(req) {
482
498
  return JourneyContext.fromObject({
483
499
  identity: {
484
- id: uuidv4(),
500
+ id: JourneyContext.generateContextId(req),
485
501
  },
486
502
  });
487
503
  }
@@ -489,17 +505,20 @@ export default class JourneyContext {
489
505
  /**
490
506
  * Construct a new JourneyContext instance from another instance.
491
507
  *
508
+ * Note: In later versions of CASA, the `req` property will be mandatory.
509
+ *
492
510
  * @param {JourneyContext} context Context to copy from
511
+ * @param {ExpressRequest} [req] Request
493
512
  * @returns {JourneyContext} Constructed JourneyContext instance
494
513
  * @throws {TypeError} When context is not a valid type
495
514
  */
496
- static fromContext(context) {
515
+ static fromContext(context, req) {
497
516
  if (!(context instanceof JourneyContext)) {
498
517
  throw new TypeError('Source context must be a JourneyContext');
499
518
  }
500
519
 
501
520
  const newContextObj = context.toObject();
502
- newContextObj.identity.id = uuidv4();
521
+ newContextObj.identity.id = JourneyContext.generateContextId(req);
503
522
 
504
523
  return JourneyContext.fromObject(newContextObj);
505
524
  }
@@ -542,14 +561,14 @@ export default class JourneyContext {
542
561
  }
543
562
 
544
563
  /**
545
- * Validate the format of a context ID, i.e. "default" or a uuid
546
- * eg 00000000-0000-0000-0000-000000000000
547
- * eg 123e4567-e89b-12d3-a456-426614174000
564
+ * Validate the format of a context ID:
565
+ * - Between 1 and 64 characters
566
+ * - Contain only the characters a-z, 0-9, -
548
567
  *
549
568
  * @param {string} id Context ID
550
569
  * @returns {string} Original ID if it's valid
551
570
  * @throws {TypeError} When id is not a valid type
552
- * @throws {SyntaxError} When id is not a valid uuid format
571
+ * @throws {SyntaxError} When id is not a valid format
553
572
  */
554
573
  static validateContextId(id) {
555
574
  if (id === JourneyContext.DEFAULT_CONTEXT_ID) {
@@ -558,9 +577,58 @@ export default class JourneyContext {
558
577
 
559
578
  if (typeof id !== 'string') {
560
579
  throw new TypeError('Context ID must be a string');
561
- } else if (!uuidValidate(id)) {
562
- throw new SyntaxError('Context ID is not in the correct uuid format');
580
+ } else if (!id.match(/^[a-z0-9-]{1,64}$/)) {
581
+ throw new SyntaxError('Context ID is not in the correct format');
582
+ }
583
+
584
+ return id;
585
+ }
586
+
587
+ /**
588
+ * Generate a new context ID, validate it, and throw if the ID has already been
589
+ * generated during this request lifecycle. This may happen if an ID was
590
+ * generated, but never used to store a new context in the session. Therefore
591
+ * it is important for user code to always call `putContext()` before
592
+ * generating another ID.
593
+ *
594
+ * @param {ExpressRequest} [req] Request
595
+ * @returns {string} New ID
596
+ * @throws {Error} When generated ID has already been used
597
+ */
598
+ static generateContextId(req) {
599
+ // Can't generate custom ID when no request object is provided, because the
600
+ // custom generator function itself exists on that object.
601
+ if (!req) {
602
+ log.warn('Generating a context ID without a given request object. Reverting to uuid().');
603
+ return uuid();
604
+ }
605
+
606
+ // Collate a list of context IDs already in use, either from existing
607
+ // contexts in the session, or generated during this request lifecycle.
608
+ // We don't identify the source of each ID because the generator must not
609
+ // differentiate its behaviour on whether the ID exists in session or not.
610
+ const inSessionIds = JourneyContext.getContexts(req.session)
611
+ .map((c) => c.identity.id)
612
+ .filter((id) => id !== JourneyContext.DEFAULT_CONTEXT_ID);
613
+ const inRequestIds = req[JourneyContext.ID_GENERATOR_REQ_LOG] ?? [];
614
+ const reservedIds = Array.from(new Set([...inSessionIds, ...inRequestIds]).values());
615
+
616
+ // Generate and log the ID
617
+ const id = JourneyContext.validateContextId(
618
+ req[JourneyContext.ID_GENERATOR_REQ_KEY].call(null, { req, reservedIds }),
619
+ );
620
+ if (reservedIds.includes(id)) {
621
+ throw new Error(`Regenerated a context ID, ${String(id)}. It has likely not yet been used to store a new context in session using JourneyContext.putContext().`);
622
+ }
623
+
624
+ if (!req[JourneyContext.ID_GENERATOR_REQ_LOG]) {
625
+ Object.defineProperty(req, JourneyContext.ID_GENERATOR_REQ_LOG, {
626
+ value: [],
627
+ enumerable: false,
628
+ writable: false,
629
+ });
563
630
  }
631
+ req[JourneyContext.ID_GENERATOR_REQ_LOG].push(id);
564
632
 
565
633
  return id;
566
634
  }
@@ -9,6 +9,7 @@ import {
9
9
  validateHookPath,
10
10
  validateView,
11
11
  } from './utils.js';
12
+ import * as contextIdGenerators from './context-id-generators.js';
12
13
 
13
14
  /**
14
15
  * @access private
@@ -435,6 +436,18 @@ export function validateFormMaxBytes(value, defaultValue = 1024 * 50) {
435
436
  return parsedValue;
436
437
  }
437
438
 
439
+ export function validateContextIdGenerator(generator) {
440
+ if (generator === undefined) {
441
+ return contextIdGenerators.uuid();
442
+ }
443
+
444
+ if (!(generator instanceof Function)) {
445
+ throw new TypeError('contextIdGenerator must be a function');
446
+ }
447
+
448
+ return generator;
449
+ }
450
+
438
451
  /**
439
452
  * Ingest, validate, sanitise and manipulate configuration parameters.
440
453
  *
@@ -489,6 +502,9 @@ export default function ingest(config = {}) {
489
502
  // Form parsing
490
503
  formMaxParams: validateFormMaxParams(config.formMaxParams, 25),
491
504
  formMaxBytes: validateFormMaxBytes(config.formMaxBytes, 1024 * 50),
505
+
506
+ // Context ID generator
507
+ contextIdGenerator: validateContextIdGenerator(config.contextIdGenerator),
492
508
  };
493
509
 
494
510
  // Freeze to modifications
@@ -77,6 +77,7 @@ export default function configure(config = {}) {
77
77
  helmetConfigurator = undefined,
78
78
  formMaxParams,
79
79
  formMaxBytes,
80
+ contextIdGenerator,
80
81
  } = ingestedConfig;
81
82
 
82
83
  // Prepare all page hooks so they are prefixed with the `journey.` scope.
@@ -124,6 +125,7 @@ export default function configure(config = {}) {
124
125
  const dataMiddleware = dataMiddlewareFactory({
125
126
  plan,
126
127
  events,
128
+ contextIdGenerator,
127
129
  });
128
130
 
129
131
  // Prepare form middleware and its constituent parts