{"_id":"hmpo-app","_rev":"46-6ed85bd74764f552818df8817f6b82a6","name":"hmpo-app","dist-tags":{"latest":"7.0.0"},"versions":{"1.0.1":{"name":"hmpo-app","version":"1.0.1","author":{"name":"HMPO"},"license":"MIT","_id":"hmpo-app@1.0.1","maintainers":[{"name":"hughepaul","email":"paul@hughe.co.uk"}],"nyc":{"all":true,"lines":100,"exclude":["example/**","coverage/**","test/**"],"branches":100,"reporter":["text-summary","text","lcov"],"functions":100,"skip-full":true,"statements":100,"check-coverage":true,"temp-directory":"coverage/.nyc_output"},"dist":{"shasum":"247fe784a00cfc8ad615e9cdec5fc9f50aff15d1","tarball":"https://registry.npmjs.org/hmpo-app/-/hmpo-app-1.0.1.tgz","fileCount":64,"integrity":"sha512-HJlWmPglWqVmDPoJ2XMgIKVjqxnMNQwMLxZQQSWQJmLuKBCXjTmLb0TochlE5KJLYDtUxsz/JiHjfkopdili1Q==","signatures":[{"sig":"MEUCICqUdAKqJzK5ZGSwOdPwy5eJQ+YbYtdEDcJe3vyI22e3AiEAqZAw7mRNFIcxib0WkSBUYkz3qczIdPc1tJolqGzdMlc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":399198,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgp3GxCRA9TVsSAnZWagAAzncP/RPC4iruZoGUKexdUEt/\nquz41XsvRdgh/KLAc+eTAUa/Q0IT/Nh05JSfOwEMj0ltn7P+39BmOgbdVTrK\nKJr9MRg+xZYTggzJWfJLJQQbAcM97hkbrOsS/mU1BZfPY/O0ZzDMhhQVO2/5\nBPgegOU+hqf3lOjsQRxzBXfMs6KEcyZofCUR7M1nJae1yM1kn9Rq3hobhLSF\n5x6nFra1PrVMe98h/Xqk3eAdL7xjvHwyFP8W/bhNMQCQMJLUdGUYaXP1mzBl\ngN1WoSplZBhxk9DHtzP7aev4+gl0utyAFr1idmJXtbuacwB/Zjlsrg6H3NIq\nOniH+bM0VNuEooR1FFpm+pVU1qDG+TMevWHxffon1qykqJUV0XrmeYAc4pWC\nS9w0bqmd8QqpQf9en8lHX+oRDpd7xk/bR3bSiIRKesMFy5PTeMFglIJpQ+xv\nQR1I7LbDXIsFi0CnTebw+s90ltGlIwuvT/GzhC+O+UJGCkeSvA75nLpCliig\n1BDKRf9DgYONUOzioxSBlWIUdtzyLoV3O59f5CWLCYtzS7rWx8W3qpNFA0ed\n8p42PLEPoPy2bNaTd7eYls1rRQfoGCgC9QomxOuyUf8jlQYkCvpmDUOj7Dx+\nZFSALTX1FB9yccFgxlS17+s3W8btiA2b9o8ffWql67NJody3+0eLVug5H3yP\n+YUo\r\n=BtQa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","husky":{"hooks":{"pre-push":"hmpo-checkgit && npm test","commit-msg":"hmpo-commitmsg"}},"mocha":{"spec":"test/unit/**/spec.*.js","require":"test/unit/helper"},"engines":{"npm":"6","node":">=12"},"gitHead":"28084ca4d17db8c4291886c93b0bfe6fa944e876","private":false,"scripts":{"test":"npm run test:unit","start":"node app.js","pretest":"npm run test:lint","posttest":"check-audit --registry 'https://registry.npmjs.org'","test:lint":"eslint . && hmpo-lintapostrophes","test:unit":"nyc _mocha"},"_npmUser":{"name":"hughepaul","email":"paul@hughe.co.uk"},"_npmVersion":"6.14.13","description":"Bootstrap middleware and templating","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.2","async":"^3.2.0","debug":"^4.3.1","redis":"^3.1.2","nocache":"^2.1.0","fakeredis":"^2.0.0","frameguard":"^4.0.0","underscore":"^1.13.1","body-parser":"^1.19.0","compression":"^1.7.4","on-finished":"^2.3.0","connect-redis":"^5.2.0","cookie-parser":"^1.4.5","express-session":"^1.17.0","deep-clone-merge":"^1.5.2"},"engineStrict":true,"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","chai":"^4.3.4","husky":"^2.7.0","mocha":"^8.4.0","sinon":"^10.0.0","eslint":"^7.26.0","reqres":"^3.0.1","express":"^4.17.1","nunjucks":"^3.2.3","hmpo-i18n":"^5.0.1","proxyquire":"^2.1.3","sinon-chai":"^3.6.0","sinon-test":"^3.1.0","hmpo-config":"^2.2.0","hmpo-logger":"^4.1.3","govuk-frontend":"^3.12.0","hmpo-components":"^3.4.1","npm-audit-resolver":"^2.3.0","hmpo-node-standards":"^1.11.2"},"peerDependencies":{"express":">=4","nunjucks":">=3","hmpo-i18n":">=4","hmpo-config":">=2","hmpo-logger":">=4","govuk-frontend":">=3","hmpo-components":">=3"},"_npmOperationalInternal":{"tmp":"tmp/hmpo-app_1.0.1_1621586352614_0.040081333160827626","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"hmpo-app","version":"1.0.2","author":{"name":"HMPO"},"license":"MIT","_id":"hmpo-app@1.0.2","maintainers":[{"name":"hughepaul","email":"paul@hughe.co.uk"}],"nyc":{"all":true,"lines":100,"exclude":["example/**","coverage/**","test/**"],"branches":100,"reporter":["text-summary","text","lcov"],"functions":100,"skip-full":true,"statements":100,"check-coverage":true,"temp-directory":"coverage/.nyc_output"},"dist":{"shasum":"e66aa89aba9a127176ffba5620b78c3918190dfc","tarball":"https://registry.npmjs.org/hmpo-app/-/hmpo-app-1.0.2.tgz","fileCount":64,"integrity":"sha512-mrV1bf8By/qbVj6RnnFT3ydEcaCWI+NQcTDRmJbcD+Q5k96sWbBt7a80Bj9YK/vAbOtr0p2GKx6/Xzk691B9Ww==","signatures":[{"sig":"MEQCIBJYUivpuS2HyAzIOUC3TQOQHoFBm2g22QBkREkOI/uNAiA6fLE7n61Gk4z7vJnr+89c5Q5ZdRZU7S/eQLN4ZunONA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":399663,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgp7F9CRA9TVsSAnZWagAAeXAP/RyHuWFp6E4DN0oCh/sk\nbXqpeDLon1Qbr13bhUhZJiOYkC805lIplSwERURT18ZR4wnGLlPwTbqVx4LO\n4GEcQeQTQqRzz+yZcHnGApS67g8S9q8h8Kf1230OyxyzYvSGS3noaYm4e57N\nIMmKJEpQVSfVk9sy/WzwZ1eNrxdU4K5Qx99QW3jVP70ZLCM5gM//IZ8Xr5hJ\n6Ftv0EskmMaWxisfh2gRMnhwcDKFhllnXH/CaqnsS26Ocf93LACfYCqYmq/C\n5KmtMJv67YDqDl1ux1Msi18Tr/A7G8Xo7o6qe8I7HiwQqDXaZdjnIv5zUlgt\nSKD/FVM65fvgx9a1JS4mlldNAJuAdfdIxhL8zR0PYXbRM6QjoCnjMyCJ2XXt\ncc60wcpr1U81B73Nl0aZWzf0EWRGztyE+6eTpFri2mAsJaWJhafcxJAxvT3a\nzgFlPWKKZyGEwlb9Ed2Nq5rB9+cSZJ34no7HFql2SCWGDIGrIxV5JUTs46Du\nTGM3g7XVJC94JO2dCH12JcBqpea8PLtp05B3vjWnki8DSGqRSZqZdBCTHzPO\n+PGjQm5aKVvX8lV8kH2H+afwrQpESsXUlR8ONtUGpcJgn/0dYsmfph+iza4/\nw0fm9OizeF05gv/b3KFJAO6NhLNJg3k+q3pIIHU2Lghcxd+vzwSZdtD07z0w\n7cVN\r\n=4qL1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","husky":{"hooks":{"pre-push":"hmpo-checkgit && npm test","commit-msg":"hmpo-commitmsg"}},"mocha":{"spec":"test/unit/**/spec.*.js","require":"test/unit/helper"},"engines":{"npm":"6","node":">=12"},"gitHead":"ee8e1afef558e92706169f5744745253d054f4bc","private":false,"scripts":{"test":"npm run test:unit","start":"node app.js","pretest":"npm run test:lint","posttest":"check-audit --registry 'https://registry.npmjs.org'","test:lint":"eslint . && hmpo-lintapostrophes","test:unit":"nyc _mocha"},"_npmUser":{"name":"hughepaul","email":"paul@hughe.co.uk"},"_npmVersion":"6.14.13","description":"Bootstrap middleware and templating","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.2","async":"^3.2.0","debug":"^4.3.1","redis":"^3.1.2","nocache":"^2.1.0","fakeredis":"^2.0.0","frameguard":"^4.0.0","underscore":"^1.13.1","body-parser":"^1.19.0","compression":"^1.7.4","on-finished":"^2.3.0","connect-redis":"^5.2.0","cookie-parser":"^1.4.5","express-session":"^1.17.0","deep-clone-merge":"^1.5.2"},"engineStrict":true,"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","chai":"^4.3.4","husky":"^2.7.0","mocha":"^8.4.0","sinon":"^10.0.0","eslint":"^7.26.0","reqres":"^3.0.1","express":"^4.17.1","nunjucks":"^3.2.3","hmpo-i18n":"^5.0.1","proxyquire":"^2.1.3","sinon-chai":"^3.6.0","sinon-test":"^3.1.0","hmpo-config":"^2.2.0","hmpo-logger":"^4.1.3","govuk-frontend":"^3.12.0","hmpo-components":"^3.4.1","npm-audit-resolver":"^2.3.0","hmpo-node-standards":"^1.11.2"},"peerDependencies":{"express":">=4","nunjucks":">=3","hmpo-i18n":">=4","hmpo-config":">=2","hmpo-logger":">=4","govuk-frontend":">=3","hmpo-components":">=3"},"_npmOperationalInternal":{"tmp":"tmp/hmpo-app_1.0.2_1621602685093_0.11659120363897157","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"hmpo-app","version":"2.0.0","author":{"name":"HMPO"},"license":"MIT","_id":"hmpo-app@2.0.0","maintainers":[{"name":"hughepaul","email":"paul@hughe.co.uk"}],"nyc":{"all":true,"lines":100,"exclude":["example/**","coverage/**","test/**"],"branches":100,"reporter":["text-summary","text","lcov"],"functions":100,"skip-full":true,"statements":100,"check-coverage":true,"temp-directory":"coverage/.nyc_output"},"dist":{"shasum":"65516c5f984c23170730d89de3afa68f80c940a1","tarball":"https://registry.npmjs.org/hmpo-app/-/hmpo-app-2.0.0.tgz","fileCount":64,"integrity":"sha512-wyYEMpjF2rhu6hddWsfczu93eQ806C9UTH7Ajkgy9m7n6L5KaspsOkOx+7MSKB/3gYMuO1rdP+WCO8fluco+3w==","signatures":[{"sig":"MEUCIQDjDtZHxcrvaYGoAePYTGQzoIt2OCSzBJKTLywu/lZkawIgDZ5bB6hke8LVm0ufgjmcw2+84AIWDEahlAD2CoDGBq8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130359,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiH5p1ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqyhw//RYCyQjHvbmxg5ju/2Xbb4WlxKrhNDbBjhyKhDQ4FSupQHoqE\r\nIlwANrlO92RZd2CvVV6psU8jP6okbD5BsYJfm8Q2+eXN1K94of/mgx8XiHLF\r\nRjcgvh4x7zA8I0PcrnPBxc3QJGqJ65QCA7goAsLbU6MoVA7DZvT14eDjBsAx\r\njzpuREtlZ1JV3PlDnp1ESWAFqG+Id8FExq0SbiJz7H6lF8ygxWdvRO8HxwzP\r\neCVSemFBRhfcLSNiK0DZm6uDFsehe++t5B4s6o8iUBI/yxVZKg2M5EakKBBB\r\nlF9Ckclvu7dG2cmsZfnoGNbvebdK0PhrRmDWJIhI4NlzG/zOKtVj+s41Ci08\r\nnfLJafM3syZBShcZXb4tk88qIkiUHCjw4oZ5HrRI+jqGoXJoxNdM60HMzaKd\r\nYQmzic6I3UrtAB4rx/qUEa+iWX3x+h23VaqWtU+C2viDFVeM9Ii9Hwrry0wr\r\niap+nfP9Wh+YOqZhp73TJtx+HdCocq6yibGXl+bswz9jbf6r8BnOCGQkCA1G\r\nfgvTUCEX7iclovxi4svrVMStXA5ePwtXXjgNeYeIGEAubOG+uzbtKukcx7N7\r\nPNriZj7VXbJTQJhpF7m5+YuRY0Gklfkwdj2skrorxfzCGOTwP96RedsUoCp9\r\n+Pnq/UKSBcPXo4myRRGdzkrV/3X6yi6L//k=\r\n=bXml\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","husky":{"hooks":{"pre-push":"hmpo-checkgit && npm test","commit-msg":"hmpo-commitmsg || true"}},"mocha":{"spec":"test/unit/**/spec.*.js","require":"test/unit/helper"},"engines":{"npm":">=6","node":">=12"},"gitHead":"862ccc1d2bcccac5037ae31fda164d460b1993fc","private":false,"scripts":{"test":"npm run test:unit","start":"node app.js","pretest":"npm run test:lint","posttest":"check-audit --registry 'https://registry.npmjs.org'","test:lint":"eslint . && hmpo-lintapostrophes","test:unit":"nyc _mocha"},"_npmUser":{"name":"hughepaul","email":"paul@hughe.co.uk"},"_npmVersion":"6.14.15","description":"Bootstrap middleware and templating","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.2","async":"^3.2.3","debug":"^4.3.3","redis":"^4.0.4","nocache":"^3.0.1","fakeredis":"^2.0.0","frameguard":"^4.0.0","underscore":"^1.13.2","body-parser":"^1.19.2","compression":"^1.7.4","on-finished":"^2.4.1","connect-redis":"^6.1.1","cookie-parser":"^1.4.6","express-session":"^1.17.2","deep-clone-merge":"^1.5.4"},"engineStrict":true,"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","chai":"^4.3.6","husky":"^2.7.0","mocha":"^9.2.1","sinon":"^13.0.1","eslint":"^8.10.0","reqres":"^3.0.1","express":"^4.17.3","nunjucks":"^3.2.3","hmpo-i18n":"^5.0.1","proxyquire":"^2.1.3","sinon-chai":"^3.7.0","sinon-test":"^3.1.3","hmpo-config":"^2.2.0","hmpo-logger":"^4.1.5","govuk-frontend":"^4.0.1","hmpo-components":"^5.2.1","npm-audit-resolver":"^3.0.0-7","hmpo-node-standards":"^1.11.2"},"peerDependencies":{"express":">=4","nunjucks":">=3","hmpo-i18n":">=5","hmpo-config":">=2","hmpo-logger":">=4","govuk-frontend":">=4","hmpo-components":">=5"},"_npmOperationalInternal":{"tmp":"tmp/hmpo-app_2.0.0_1646238325167_0.9888447790303712","host":"s3://npm-registry-packages"}},"2.1.0":{"name":"hmpo-app","version":"2.1.0","author":{"name":"HMPO"},"license":"MIT","_id":"hmpo-app@2.1.0","maintainers":[{"name":"hughepaul","email":"paul@hughe.co.uk"}],"nyc":{"all":true,"lines":100,"exclude":["example/**","coverage/**","test/**"],"branches":100,"reporter":["text-summary","text","lcov"],"functions":100,"skip-full":true,"statements":100,"check-coverage":true,"temp-directory":"coverage/.nyc_output"},"dist":{"shasum":"cef20accdd580dec9bd94dfda65c662e69c76619","tarball":"https://registry.npmjs.org/hmpo-app/-/hmpo-app-2.1.0.tgz","fileCount":64,"integrity":"sha512-EhZs5/2MP90JC80tHb0biYg6TP9xA5o5ydBAKIJhaHeHmltrf4HShOfmy9kRs/axzwFrWSnb20OdHf1ncTIGKw==","signatures":[{"sig":"MEUCIQDa5Qrkm/wZXNdxaSYXB8IxWECCVgo/ODs6JvGfWAlQIQIgVDxrDxAjD9udHLYMIuJ3KArTZjRMZWAmBXp5cuxawFM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":131509,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiog+4ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqjAA//cjxyX4rxrn8dy56vo+WOkIO0PzOGgFesZtO9LZ8iqTC7Zuv3\r\nCjw7INPt9LDpTr19zWiYxJmLGzsBZ9KaDo+5nnTMOdHrmvc3EXaY4BSghREJ\r\nXCEbLHK09C4frZhCEWRJZcqsy/T2YMdp4mcwzUKVVzS/7490btE7QIzP7xo/\r\nu4aMDGn12pOaKn1bpnSuojnnb3wXs6Ln+KGA64JN5r8CnJzMse6v+RN+0pL2\r\nMVgjID3ZvbBltL9FVjfVrPfx8hRw/l/XZKL+8N5jCWJ7kjdHlFEMNBEDktgj\r\n3H71OAm+gO1UZky0HQ836t9mC2KDXRM7+eWNu1nbUo/vqw3xqHCx52ubppOY\r\nEemrdGDgc6ALtdKWhvQKS22Sq6c5Od6PQDKFG+VsFWwsJgSchQ7rTk4bGSV9\r\nH/ThpTCqrN9Sf/kf2Nhtz3WPH6+g6NtrhEUVmomSbI+BvWHm7U1gmECFzulW\r\ngCcR65fVRZUc+/dIwVbUwVxnvogKPbZFBDD+Zliu0zzm57XZ7YrmB+cBfzOL\r\nzsTTPXkub5Pfqgz+5oIIt3LqvR6+cyVHywbvwFpGK0DcLyZfWdn88CDWpgzl\r\n1CccvAZ6tvvAzBaiGqUPcHgRmT240eIwYK7ZGvEJyCXkf/JJMaEF78nAA8A2\r\nWaKr3Y4edi2ZPjVEeep3fIwICwzXThKsHAw=\r\n=ELmJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","husky":{"hooks":{"pre-push":"hmpo-checkgit && npm test","commit-msg":"hmpo-commitmsg || true"}},"mocha":{"spec":"test/unit/**/spec.*.js","require":"test/unit/helper"},"engines":{"npm":">=6","node":">=12"},"gitHead":"31c883e0ece9136daf6313e28e6b25ee91312267","private":false,"scripts":{"test":"npm run test:unit","start":"node app.js","pretest":"npm run test:lint","posttest":"check-audit --registry 'https://registry.npmjs.org'","test:lint":"eslint . && hmpo-lintapostrophes","test:unit":"nyc _mocha"},"_npmUser":{"name":"hughepaul","email":"paul@hughe.co.uk"},"_npmVersion":"6.14.15","description":"Bootstrap middleware and templating","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.2","async":"^3.2.4","debug":"^4.3.4","redis":"^4.0.4","nocache":"^3.0.4","fakeredis":"^2.0.0","frameguard":"^4.0.0","underscore":"^1.13.4","body-parser":"^1.20.0","compression":"^1.7.4","on-finished":"^2.4.1","connect-redis":"^6.1.3","cookie-parser":"^1.4.6","express-session":"^1.17.3","deep-clone-merge":"^1.5.4"},"engineStrict":true,"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","chai":"^4.3.6","husky":"^2.7.0","mocha":"^10.0.0","sinon":"^14.0.0","eslint":"^8.17.0","reqres":"^3.0.1","express":"^4.18.1","nunjucks":"^3.2.3","hmpo-i18n":"^5.0.1","proxyquire":"^2.1.3","sinon-chai":"^3.7.0","sinon-test":"^3.1.3","hmpo-config":"^2.2.0","hmpo-logger":"^6.0.0","govuk-frontend":"^4.0.1","hmpo-components":"^5.3.0","npm-audit-resolver":"^3.0.0-7","hmpo-node-standards":"^1.11.2"},"peerDependencies":{"express":">=4","nunjucks":">=3","hmpo-i18n":">=5","hmpo-config":">=2","hmpo-logger":">=4","govuk-frontend":">=4","hmpo-components":">=5"},"_npmOperationalInternal":{"tmp":"tmp/hmpo-app_2.1.0_1654788024396_0.2879595318630619","host":"s3://npm-registry-packages"}},"2.2.0":{"name":"hmpo-app","version":"2.2.0","author":{"name":"HMPO"},"license":"MIT","_id":"hmpo-app@2.2.0","maintainers":[{"name":"hughepaul","email":"paul@hughe.co.uk"}],"nyc":{"all":true,"lines":100,"exclude":["example/**","coverage/**","test/**"],"branches":100,"reporter":["text-summary","text","lcov"],"functions":100,"skip-full":true,"statements":100,"check-coverage":true,"temp-directory":"coverage/.nyc_output"},"dist":{"shasum":"b59ddbc0065cd84a8b36cd9f10424bb2b7486d43","tarball":"https://registry.npmjs.org/hmpo-app/-/hmpo-app-2.2.0.tgz","fileCount":65,"integrity":"sha512-MaWTI/ztTWjSsklhLYerWB0d2QWPbrqaep8b8Ci3E1/e1jW+eyv45TvCi6nkOxHXFAzU4M4XXkILLtQ9jBEAdg==","signatures":[{"sig":"MEUCIASU7Q0GcdhturUoIpn3YjeD8dbrcflVIv/RXqwTDlh9AiEAv8xRBecPBztQjkAZPusFYAYuWW5aIIJwTLUa4HxwKtg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":134951,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJirILZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp+Zg//fxyW31KygJAOERzFXLN/pJBSpqa2ARrCTMO/dGjFqiSFTsmh\r\nh2JHR62nZFkUkfHPI/RnMAFQvMdV/OYuU4Rdd49zf3AY6z0ZtoaeECY+QeTS\r\nYEuc2I90Lv1a9LQ51P3xdW+qUjVazmJfNj29jLutbkVcDsz7yXx4X6ttlU/E\r\nlCfKMcsBOhzZgiKopmkNtate0dVTmX/eEHAI+dkrwnsrcXE9qQ6UUbnVKB+t\r\n2HFCQQZX9jOJe0Jy1xzHG0lSM6bwUip7uyMOMHqHuWqzuMajHdnnGhdALZNf\r\n+kfGKXMjMMMfW3nr9pk/9hSLVPFF0wPTZvN/IskQZDwhKrnuLVaQuB+F10x2\r\ns/Mr/BSYJSmKPtcaC2cVrQEYNcZOfPucRlXlxWdyERET4jM0Ggma+r/8asj7\r\njf4UTI6WlZKaf0SmEsz/ccWU7DInOybByNYOxJPDcA0uJosRBTEUMt2FtwLs\r\nMXVw2aBMT5108ggLEcuACOhcbM9UIrI7d48sg+ho89O4swEo/jjuYSLwyXSU\r\nRfGj11oqBkHTAmgPjoPWcqQY5Ixc1q4Vb2xx5/5xwGGyNrBAWVwRwh0MI6ob\r\n8bCjbeGFZ+QjY62Oxttk/ao8CJM7Og+JCD7aMtkjYdv3g6yLaSmsMa5Wh8XM\r\npOmvqm834mOCjyG+smMw/zkERFVUBv2CptA=\r\n=Dp5c\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","husky":{"hooks":{"pre-push":"hmpo-checkgit && npm test","commit-msg":"hmpo-commitmsg || true"}},"mocha":{"spec":"test/unit/**/spec.*.js","require":"test/unit/helper"},"engines":{"npm":">=6","node":">=12"},"gitHead":"a22b16a4ff85599095449d33150441494048797d","private":false,"scripts":{"test":"npm run test:unit","start":"node app.js","pretest":"npm run test:lint","posttest":"check-audit --registry 'https://registry.npmjs.org'","test:lint":"eslint . && hmpo-lintapostrophes","test:unit":"nyc _mocha"},"_npmUser":{"name":"hughepaul","email":"paul@hughe.co.uk"},"_npmVersion":"6.14.15","description":"Bootstrap middleware and templating","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.2","async":"^3.2.4","debug":"^4.3.4","redis":"^4.0.4","nocache":"^3.0.4","fakeredis":"^2.0.0","frameguard":"^4.0.0","underscore":"^1.13.4","body-parser":"^1.20.0","compression":"^1.7.4","on-finished":"^2.4.1","connect-redis":"^6.1.3","cookie-parser":"^1.4.6","express-session":"^1.17.3","deep-clone-merge":"^1.5.4"},"engineStrict":true,"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","chai":"^4.3.6","husky":"^2.7.0","mocha":"^10.0.0","sinon":"^14.0.0","eslint":"^8.17.0","reqres":"^3.0.1","express":"^4.18.1","nunjucks":"^3.2.3","hmpo-i18n":"^5.0.1","proxyquire":"^2.1.3","sinon-chai":"^3.7.0","sinon-test":"^3.1.3","hmpo-config":"^2.2.0","hmpo-logger":"^6.1.0","govuk-frontend":"^4.0.1","hmpo-components":"^5.3.0","npm-audit-resolver":"^3.0.0-7","hmpo-node-standards":"^1.11.2"},"peerDependencies":{"express":">=4","nunjucks":">=3","hmpo-i18n":">=5","hmpo-config":">=2","hmpo-logger":">=4","govuk-frontend":">=4","hmpo-components":">=5"},"_npmOperationalInternal":{"tmp":"tmp/hmpo-app_2.2.0_1655472857756_0.04585672558698661","host":"s3://npm-registry-packages"}},"2.2.1":{"name":"hmpo-app","version":"2.2.1","author":{"name":"HMPO"},"license":"MIT","_id":"hmpo-app@2.2.1","maintainers":[{"name":"hughepaul","email":"paul@hughe.co.uk"}],"nyc":{"all":true,"lines":100,"exclude":["example/**","coverage/**","test/**"],"branches":100,"reporter":["text-summary","text","lcov"],"functions":100,"skip-full":true,"statements":100,"check-coverage":true,"temp-directory":"coverage/.nyc_output"},"dist":{"shasum":"e5839fb49f550aeec531f5a1b9851471b67c59d8","tarball":"https://registry.npmjs.org/hmpo-app/-/hmpo-app-2.2.1.tgz","fileCount":65,"integrity":"sha512-XBe8/KCiMqrvFWTqqFGxoJ5WnihBpiEA8uRekidGKXj9ev7cOrO7R6iSNkzZfVUwyGzOISNqlJ9oZYybNoRZyg==","signatures":[{"sig":"MEUCIG+UtV+14ncVSF57zezb0TGzmWBAqOvxyyNEb7eRrXXDAiEA3omIDxCo3gBJaerHrN9LgpBsEX2eTU+3yv2Usmkt2u4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":134950,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJirIVkACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoSSw/+JPHkdlDrh5q3zU/cmsBeinpzwAlsN1X7iLWMACJrao8fV1QF\r\nvZ4MdRhHwXfBURrHklS/Xsg+Zvvyz5dQQieiaSMRP85Y2GUiywaEKEyltOmJ\r\n7HJqlQA3DShuiHViw29LIyYw+gCsOIaWeSToD51ac9YIpYEgwo1kW20KZAsz\r\nrDdORBc6bCyiWDjw9jZAsCfquEiJg4dIw0SPNuxVUpdWkhC1udV488Wi8fGN\r\nWqNPyIFLrnf1R3bmyXmUgoMQBuUmIfkWDWPxWXF+LP1lr3TtvK9TZAQj/WQg\r\nB3ihihPQC9WLII9OHgpwRM/rMl5z2hljMMdQSaouD3nFgpLc4IIhmvZsBmAr\r\np9yYWZzcZCNtY1IjvgmcObGcnFj5AqWN2gxNtqfuQ1x7hDAC8/MwZwhqPYOy\r\n01TIqPsXxgAl0FylIBNIzZgDIKOtEZPju0i0HH270RQAH7PFyau95Y2xNc7F\r\nz0a9CbtpOS6VTggn9NvpSWvp5R7jfYfC4Od5xpq/zwol2fYqzu+i4lzaOyF6\r\nqwh0g8kL9bqOY4ZXH6CtL4mXfyELLwIYK7gj3AhzhBGA272cLZh9H+Ar07XK\r\n7g7kL1xzkddn0hOuSov/PVvCbG4bin8eaamhV+/ZqyBtpiCrLjijef4CqYMm\r\nzcNqUtGT0WAWK3fLRHUSo1EalnA0dvvpa1M=\r\n=Lw9l\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","husky":{"hooks":{"pre-push":"hmpo-checkgit && npm test","commit-msg":"hmpo-commitmsg || true"}},"mocha":{"spec":"test/unit/**/spec.*.js","require":"test/unit/helper"},"engines":{"npm":">=6","node":">=12"},"gitHead":"7aee55f8891433a0514037d3d45efc4645323c28","private":false,"scripts":{"test":"npm run test:unit","start":"node app.js","pretest":"npm run test:lint","posttest":"check-audit --registry 'https://registry.npmjs.org'","test:lint":"eslint . && hmpo-lintapostrophes","test:unit":"nyc _mocha"},"_npmUser":{"name":"hughepaul","email":"paul@hughe.co.uk"},"_npmVersion":"6.14.15","description":"Bootstrap middleware and templating","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.2","async":"^3.2.4","debug":"^4.3.4","redis":"4.0.x","nocache":"^3.0.4","fakeredis":"^2.0.0","frameguard":"^4.0.0","underscore":"^1.13.4","body-parser":"^1.20.0","compression":"^1.7.4","on-finished":"^2.4.1","connect-redis":"^6.1.3","cookie-parser":"^1.4.6","express-session":"^1.17.3","deep-clone-merge":"^1.5.4"},"engineStrict":true,"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","chai":"^4.3.6","husky":"^2.7.0","mocha":"^10.0.0","sinon":"^14.0.0","eslint":"^8.17.0","reqres":"^3.0.1","express":"^4.18.1","nunjucks":"^3.2.3","hmpo-i18n":"^5.0.1","proxyquire":"^2.1.3","sinon-chai":"^3.7.0","sinon-test":"^3.1.3","hmpo-config":"^2.2.0","hmpo-logger":"^6.1.0","govuk-frontend":"^4.0.1","hmpo-components":"^5.3.0","npm-audit-resolver":"^3.0.0-7","hmpo-node-standards":"^1.11.2"},"peerDependencies":{"express":">=4","nunjucks":">=3","hmpo-i18n":">=5","hmpo-config":">=2","hmpo-logger":">=4","govuk-frontend":">=4","hmpo-components":">=5"},"_npmOperationalInternal":{"tmp":"tmp/hmpo-app_2.2.1_1655473508107_0.3731397145812798","host":"s3://npm-registry-packages"}},"2.3.0":{"name":"hmpo-app","version":"2.3.0","author":{"name":"HMPO"},"license":"MIT","_id":"hmpo-app@2.3.0","maintainers":[{"name":"hughepaul","email":"paul@hughe.co.uk"}],"nyc":{"all":true,"lines":100,"exclude":["example/**","coverage/**","test/**"],"branches":100,"reporter":["text-summary","text","lcov"],"functions":100,"skip-full":true,"statements":100,"check-coverage":true,"temp-directory":"coverage/.nyc_output"},"dist":{"shasum":"9ac43f50bbe1d22acdbb0df0e0775dc76496bd6a","tarball":"https://registry.npmjs.org/hmpo-app/-/hmpo-app-2.3.0.tgz","fileCount":67,"integrity":"sha512-okBETJEmTQyQNZ0HaYQtpiKdWcwqBaokmGU1wqZ1KfMRxuXxbIuc/5t9g7f7khG4RbMLuaJ8e+H7ZyVIVdO78A==","signatures":[{"sig":"MEQCICtZ8hyLiRszA1Sb5scbGT20lkmNjKGKz14C6cRATb0IAiB8IAgP1gceWVJvn7HrhOs2TBzRuSLda7EsFd3sGyGj1A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":138632,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJitamiACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo6Vg/+I6SjP1G5Tp7cd/ANBbM0H7zQaMQF2JX8MF2An0yyfZEjkwRh\r\nObDT2gci9v0Ctl6dJkdANHllg1cdpXhogiSaKWyrzHfWQJfB5UPTHnoFW7H0\r\n6atdgOJMGcWYOBQoUda+2A/E7EMfYnDKrR6q13BrLNf6rAZ1S0C6tvHxv4c9\r\nhptGYAzD0tv9PInZdXSX3KFElAvlz4WnPP89gqY1PrBJVHk0gzNHfuKkdIww\r\nwFh3gAPZdWqWU7XeDxPjEqqEHKC5bxAtxH3dhjsNw3t4JDBxO7KC7nxyVYg2\r\nAC07vAhUuKjtJ8j8zBN5aVGf4WWJNbMOySZ4I9cKyz4bR4nnoth2P1ONHJ0N\r\nke1fmdJEnjmnRCpnSc5h+nMuuvN+Uq/0svQukJZP+H1lLakD/37O/ilDVHeg\r\nkIvIAQBvLYUjkc1JPmIOTF7u5oM+wtvV1TWgYamBb+R1u3yvJD0XX7VKumVq\r\nu72HtLXdWGXNUVNSBttUIv26C/hHBme34L0a4tdHqVgfFhtb9NZYNiDPNeL4\r\nMOSbr29CpFeZyulgphGYxwbd95qCl1OLykbmKR8SAlq9GQPvVUIH8sLubnYY\r\nq9hInIxiSv18ZzkfeaZQaFkpH9Xk/jqEL5yopJTAoXW5a7rgFdJ03Y3lC0lT\r\nvDrQkmrqwAQoRZOt1yKPDr4J69x6+n5npwY=\r\n=oM13\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","husky":{"hooks":{"pre-push":"hmpo-checkgit && npm test","commit-msg":"hmpo-commitmsg > /dev/null || true"}},"mocha":{"spec":"test/unit/**/spec.*.js","require":"test/unit/helper"},"engines":{"npm":">=6","node":">=12"},"gitHead":"a20e5ae7d7254bb83d3484a13156fc4865ad31fa","private":false,"scripts":{"test":"npm run test:unit","start":"node app.js","pretest":"npm run test:lint","posttest":"check-audit --registry 'https://registry.npmjs.org'","test:lint":"eslint . && hmpo-lintapostrophes","test:unit":"nyc _mocha"},"_npmUser":{"name":"hughepaul","email":"paul@hughe.co.uk"},"_npmVersion":"6.14.15","description":"Bootstrap middleware and templating","directories":{},"_nodeVersion":"12.18.4","dependencies":{"uuid":"^8.3.2","async":"^3.2.4","debug":"^4.3.4","redis":"4.0.x","helmet":"5.1.0","nocache":"^3.0.4","fakeredis":"^2.0.0","frameguard":"^4.0.0","underscore":"^1.13.4","body-parser":"^1.20.0","compression":"^1.7.4","on-finished":"^2.4.1","connect-redis":"^6.1.3","cookie-parser":"^1.4.6","express-session":"^1.17.3","deep-clone-merge":"^1.5.4"},"engineStrict":true,"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","chai":"^4.3.6","husky":"^2.7.0","mocha":"^10.0.0","sinon":"^14.0.0","eslint":"^8.18.0","reqres":"^3.0.1","express":"^4.18.1","nunjucks":"^3.2.3","hmpo-i18n":"^5.0.2","proxyquire":"^2.1.3","sinon-chai":"^3.7.0","sinon-test":"^3.1.3","hmpo-config":"^2.2.1","hmpo-logger":"^6.1.1","govuk-frontend":"^4.0.1","hmpo-components":"^5.3.1","npm-audit-resolver":"^3.0.0-7","hmpo-node-standards":"^1.11.2"},"peerDependencies":{"express":">=4","nunjucks":">=3","hmpo-i18n":">=5","hmpo-config":">=2","hmpo-logger":">=4","govuk-frontend":">=4","hmpo-components":">=5"},"_npmOperationalInternal":{"tmp":"tmp/hmpo-app_2.3.0_1656072610263_0.5399102937587701","host":"s3://npm-registry-packages"}},"2.4.0":{"name":"hmpo-app","version":"2.4.0","author":{"name":"HMPO"},"license":"MIT","_id":"hmpo-app@2.4.0","maintainers":[{"name":"hughepaul","email":"paul@hughe.co.uk"}],"nyc":{"all":true,"lines":100,"exclude":["example/**","coverage/**","test/**"],"branches":100,"reporter":["text-summary","text","lcov"],"functions":100,"skip-full":true,"statements":100,"check-coverage":true,"temp-directory":"coverage/.nyc_output"},"dist":{"shasum":"e52239cda5b8a37836e031f3ffdcd4d5b48d6799","tarball":"https://registry.npmjs.org/hmpo-app/-/hmpo-app-2.4.0.tgz","fileCount":67,"integrity":"sha512-/0DaN7Vy8Ke3Gpl0E67LT58jKobWLNXv14+q+AL65InOKz7mIBgN0NHEgXOUV96WMIbHunGl0dSJPcyhQw1hdw==","signatures":[{"sig":"MEUCIDjLgS+jq+Nt4ck8UZnGk/VrU4jwwhVZaAw13r4Cw5RJAiEAyyRHb5fixpnbgFucRehi2CPBtr2vuIiTGuwEuOpgpEM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":138249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi4q3VACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoQJw/+PyT9aa38WF/2NAcuKp8bOzTL4q4/OyB2h6ulmLOMq3wtNCMo\r\nu5sPBCLT7OHd4lJaS667vbqnkjhyly97Q2f9s8qK71VTaAsB0ciqmfwNjuaj\r\n5RGRNnCMzDt8pcWe4l+rV6cJa88heGYgRkzZTFyyGXdY6qooZgwZ1hD9wuJP\r\niX8olKAQL2duhuuEpt2wzaq2MSYgGs7V2IKggMMooeuCoTiRLPwjz/1tWvtZ\r\nh30XwJ0dDORhC3P0cg6VE1NpePwzV1m/QXtnACGHBo68e+ub5xCDZRr9mWgn\r\n9hFGJIuK14iyt1eVEMDLYenm2Bs1tsm7PKBn0Xk6yUKxzjk/qL6DuzfaO0S4\r\npPAjz9kaUWQmqQyGD5PqUXX4b200k4VxIg0si75/AIMNAJjZ4WKA7q59EMgx\r\nMkhBsvjBuPRU6BcRYChbi5utFG5OccDzJVqSnd1p2Tz1V7GyewJzZ7wvfsmL\r\nEakzRwY2qYpRkJjuWzh2S3bl0xC4Z+380oE4ErrW9ytvh6W83DEUlePTmOhy\r\nGoUqCpV2S9bX38lTFZXUvKu4PQdRuzb6w4EfLaqxuJsncp+q339p5bhuAr4L\r\nIN1Yup+DlwtxTbvt+9n/5JPVHqd6JX0Lwze1xJhCRG+Txdp31i8YSfF+MAGf\r\nJifHfNCMNpzOyl+4JQNaTIEd8/JtmKKRvTo=\r\n=OjT5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","husky":{"hooks":{"pre-push":"hmpo-checkgit && npm test","commit-msg":"hmpo-commitmsg > /dev/null || true"}},"mocha":{"spec":"test/unit/**/spec.*.js","require":"test/unit/helper"},"engines":{"npm":">=6","node":">=12"},"gitHead":"032b767f23edc208f0c6194268b030913a90d683","private":false,"scripts":{"test":"npm run test:unit","start":"node app.js","pretest":"npm run test:lint","posttest":"check-audit --registry 'https://registry.npmjs.org'","test:lint":"eslint . && hmpo-lintapostrophes","test:unit":"nyc _mocha"},"_npmUser":{"name":"hughepaul","email":"paul@hughe.co.uk"},"_npmVersion":"8.13.1","description":"Bootstrap middleware and templating","directories":{},"_nodeVersion":"16.15.1","dependencies":{"uuid":"^8.3.2","async":"^3.2.4","debug":"^4.3.4","redis":"4.0.x","helmet":"5.1.0","nocache":"^3.0.4","fakeredis":"^2.0.0","frameguard":"^4.0.0","underscore":"^1.13.4","body-parser":"^1.20.0","compression":"^1.7.4","on-finished":"^2.4.1","connect-redis":"^6.1.3","cookie-parser":"^1.4.6","express-session":"^1.17.3","deep-clone-merge":"^1.5.4"},"engineStrict":true,"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.0","chai":"^4.3.6","husky":"^2.7.0","mocha":"^10.0.0","sinon":"^14.0.0","eslint":"^8.18.0","reqres":"^3.0.1","express":"^4.18.1","nunjucks":"^3.2.3","hmpo-i18n":"^5.0.2","proxyquire":"^2.1.3","sinon-chai":"^3.7.0","hmpo-config":"^2.2.1","hmpo-logger":"^6.1.1","govuk-frontend":"^4.0.1","hmpo-components":"^5.3.1","npm-audit-resolver":"^3.0.0-7","hmpo-node-standards":"^1.11.2"},"peerDependencies":{"express":">=4","nunjucks":">=3","hmpo-i18n":">=5","hmpo-config":">=2","hmpo-logger":">=4","govuk-frontend":">=4","hmpo-components":">=5"},"_npmOperationalInternal":{"tmp":"tmp/hmpo-app_2.4.0_1659022805263_0.1717530162660903","host":"s3://npm-registry-packages"}},"3.0.0":{"name":"hmpo-app","version":"3.0.0","author":{"name":"HMPO"},"license":"MIT","_id":"hmpo-app@3.0.0","maintainers":[{"name":"hughepaul","email":"paul@hughe.co.uk"}],"nyc":{"all":true,"lines":100,"exclude":["example/**","coverage/**","test/**"],"branches":100,"reporter":["text-summary","text","lcov"],"functions":100,"skip-full":true,"statements":100,"check-coverage":true,"temp-directory":"coverage/.nyc_output"},"dist":{"shasum":"d449772f1aabc45cd0de12f6e4dbd1b73436fa30","tarball":"https://registry.npmjs.org/hmpo-app/-/hmpo-app-3.0.0.tgz","fileCount":67,"integrity":"sha512-SlvJs5pLWMv+r80qXDZI3o1Qox94Dpf0dJ9AMeySg3sNpLjy0YqohDxmoobz5zBsB5L64o48RoPCMF5DApqfrg==","signatures":[{"sig":"MEQCIBWDDX69aX+6n9vIAqGYJgnvPU/2jvNlsl6UmRv4InbZAiBmoIeaNfVSYoTy5jsT0tsVMu/mhvIr4ET1dv576qPgng==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":138248,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkSu6GACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpY2Q//Y7W81u+odZsk+LMD6is+I8If/ugjT4FFOrHy6+eu/FYtufxf\r\nh0Lx0TguFwznOnJkE4h1pHpPswpcFV3eNYObHvU9qzEfS99nzyujW1EZVSMa\r\n78q0/f8Oe15CS+HB4rOTMPf5R8tZD3xbvjn64qdrcDcttQGYO45Nr7ns9aAP\r\nEmTupuDfowK3wgajewKct7CiHSUoLovrkKl0sYWRTEDnBBf7CNqzoA8Wc3jZ\r\nu85rQI+Ms7VHFBrizBMvw+IpghntnRbGXI+w/j4pOFKoq4CCmF3eGkKFepMS\r\nXDVEZOsLf6kNQwQrVKyDC4e8zq1OFIkRCVBRPvtjTumW8DIA39l+IKfV/mfm\r\n3V9vVDmLKfIds6Kqj0fIateWrK87g9hi/AOqvXwVGojLb22B0jc0i/6qEkJn\r\nBvCMSH/Nxti3mgROXm4BH7vWOCkR2gOjxmJneK4/bU4guDU9KO9hKpfA5b3g\r\nIoijisVZyBtIpZec/tK64wEe6plFWJCvLdFEazRW9dI1MIs7ZZROcl5YH1D7\r\ns9vt5IJKeV8MJdu9iE0/XhnwYEePq0LOl8T2s5dyVCKOK7snnO+xJBvY53Hx\r\nPxdSdBnSm+EIeiFSnwtflECltgnJsGxVhgLvdWDkR0R7KpsBr4mv4TCiX4uw\r\nKD0+B7aRTVdzk+8yQGl8SQA9ciCihuS764I=\r\n=MBo5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","husky":{"hooks":{"pre-push":"hmpo-checkgit && npm test","commit-msg":"hmpo-commitmsg > /dev/null || true"}},"mocha":{"spec":"test/unit/**/spec.*.js","require":"test/unit/helper"},"engines":{"node":">=14"},"gitHead":"f539d19013a5de9e9ac98595bcdd8eeb963133d6","private":false,"scripts":{"test":"npm run test:unit","start":"node app.js","pretest":"npm run test:lint","posttest":"check-audit --registry 'https://registry.npmjs.org'","test:lint":"eslint . && hmpo-lintapostrophes","test:unit":"nyc _mocha"},"_npmUser":{"name":"hughepaul","email":"paul@hughe.co.uk"},"_npmVersion":"9.6.4","description":"Bootstrap middleware and templating","directories":{},"_nodeVersion":"18.16.0","dependencies":{"uuid":"^9.0.0","async":"^3.2.4","debug":"^4.3.4","redis":"^4.6.5","helmet":"^6.1.5","nocache":"^3.0.4","fsevents":"~2.3.2","fakeredis":"^2.0.0","frameguard":"^4.0.0","underscore":"^1.13.6","body-parser":"^1.20.2","compression":"^1.7.4","on-finished":"^2.4.1","connect-redis":"^6.1.3","cookie-parser":"^1.4.6","express-session":"^1.17.3","deep-clone-merge":"^1.5.5"},"engineStrict":true,"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.1.0","chai":"^4.3.7","husky":"^2.7.0","mocha":"^10.2.0","sinon":"^15.0.4","eslint":"^8.39.0","reqres":"^3.0.1","express":"^4.18.2","nunjucks":"^3.2.4","hmpo-i18n":"^6.0.1","proxyquire":"^2.1.3","sinon-chai":"^3.7.0","hmpo-config":"^3.0.0","hmpo-logger":"^7.0.0","govuk-frontend":"^4.6.0","hmpo-components":"^6.0.0","npm-audit-resolver":"^3.0.0-7","hmpo-node-standards":"^1.13.0"},"peerDependencies":{"express":">=4","nunjucks":">=3","hmpo-i18n":">=6","hmpo-config":">=3","hmpo-logger":">=7","govuk-frontend":">=4","hmpo-components":">=6"},"optionalDependencies":{"fsevents":"~2.3.2"},"_npmOperationalInternal":{"tmp":"tmp/hmpo-app_3.0.0_1682632326292_0.07003760093116829","host":"s3://npm-registry-packages"}},"3.0.1":{"name":"hmpo-app","version":"3.0.1","author":{"name":"HMPO"},"license":"MIT","_id":"hmpo-app@3.0.1","maintainers":[{"name":"hughepaul","email":"paul@hughe.co.uk"}],"nyc":{"all":true,"lines":100,"exclude":["example/**","coverage/**","test/**"],"branches":100,"reporter":["text-summary","text","lcov"],"functions":100,"skip-full":true,"statements":100,"check-coverage":true,"temp-directory":"coverage/.nyc_output"},"dist":{"shasum":"9ef5964fb319b3a3c0bb79e7e6896b95c23166e3","tarball":"https://registry.npmjs.org/hmpo-app/-/hmpo-app-3.0.1.tgz","fileCount":66,"integrity":"sha512-hGrqZYnlChUaOtcPUvoitdTkcIUivEL365MrrikazcAq6miVh9ZaepVgNtG7RJup5qTOgIZOZPMjVqowLQiEtg==","signatures":[{"sig":"MEQCIGs5/3rzKMP6A/1C7VHEyy3eA9/gtJQio0uzB3jvvzY5AiBgu0atXzIND5o2AzwhQEqZ11Wn5Y7aZ58QQ/xHg4nfgw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":137382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkSvCkACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrVkRAAoCTMzimyysE+8bgb2mRdTaldIUXDXoiCefJa84zBpBNnpqv2\r\nAQAZv5pj96+ql2nRwlt4tg25kblE1n8ekJa3kgNs/Z4XT7wXF7pmxRWax++c\r\nlo72mWqvPcJ0kyvUC5wKxO1ZMxV6exAh79O71YKZCUsUIrkuorGVCrlweEh0\r\nlxlPaQu1IjLgNuS26UgiGR2b8KkHda6ENVGMZ9oUB9vw2I5iJFGCY3WVj3BA\r\nZnvH2f8lQRm+5cQkGIVf1vTb8tHI0NQE6m64QSVL1w+XCadWy70VZw0NR21I\r\n/917PjqEAAHJ5bMk+TWNG/XD85PNkmc8S40OFdr4cCegkDwlkiyP/n3R+Aj4\r\n/XhL81GzzDeJEMV5TP7mVRvU3hgstMgM34MmU1qpOGDkRDMLB0TrIvLj6S61\r\nl8WtjWCVVZLVpRwZoILrexL1jji1jHRjjux3A2vxTdA8J2bS5zPgUIB4e9PP\r\nKY8y/ZpQZOE2OeG8an+VCugN2Q+ftg74eUKHD+KvkYPs4TPpnOLs8pJtSeSa\r\nz0ijDWjZclu4CsHz92Mn5Nw3aLF1sHxkCOWH6F1JIFrKkc9hFPsLz7q3LHjj\r\nAjX3hrcdC0oo9IySIRALJ4pXZOcNqEB3ANTYZoja4iM+9dryXMVLkR15RPkv\r\n8H8+FYvNAByERu9IydgXdxBRajSLTNV4hGE=\r\n=MLHe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","husky":{"hooks":{"pre-push":"npm test"}},"mocha":{"spec":"test/unit/**/spec.*.js","require":"test/unit/helper"},"engines":{"node":">=14"},"gitHead":"a4e186c1ae9cd3f7ecdff4f93588a827a8775571","private":false,"scripts":{"test":"npm run test:unit","start":"node app.js","pretest":"npm run test:lint","posttest":"npm audit","test:lint":"eslint .","test:unit":"nyc _mocha"},"_npmUser":{"name":"hughepaul","email":"paul@hughe.co.uk"},"_npmVersion":"9.6.4","description":"Bootstrap middleware and templating","directories":{},"_nodeVersion":"18.16.0","dependencies":{"uuid":"^9.0.0","async":"^3.2.4","debug":"^4.3.4","redis":"^4.6.5","helmet":"^6.1.5","nocache":"^3.0.4","fsevents":"~2.3.2","fakeredis":"^2.0.0","frameguard":"^4.0.0","underscore":"^1.13.6","body-parser":"^1.20.2","compression":"^1.7.4","on-finished":"^2.4.1","connect-redis":"^6.1.3","cookie-parser":"^1.4.6","express-session":"^1.17.3","deep-clone-merge":"^1.5.5"},"engineStrict":true,"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.1.0","chai":"^4.3.7","husky":"^2.7.0","mocha":"^10.2.0","sinon":"^15.0.4","eslint":"^8.39.0","reqres":"^3.0.1","express":"^4.18.2","nunjucks":"^3.2.4","hmpo-i18n":"^6.0.1","proxyquire":"^2.1.3","sinon-chai":"^3.7.0","hmpo-config":"^3.0.0","hmpo-logger":"^7.0.0","govuk-frontend":"^4.6.0","hmpo-components":"^6.0.0"},"peerDependencies":{"express":">=4","nunjucks":">=3","hmpo-i18n":">=6","hmpo-config":">=3","hmpo-logger":">=7","govuk-frontend":">=4","hmpo-components":">=6"},"optionalDependencies":{"fsevents":"~2.3.2"},"_npmOperationalInternal":{"tmp":"tmp/hmpo-app_3.0.1_1682632868172_0.21017559229826688","host":"s3://npm-registry-packages"}},"3.0.2":{"name":"hmpo-app","version":"3.0.2","author":{"name":"HMPO"},"license":"MIT","_id":"hmpo-app@3.0.2","maintainers":[{"name":"georgeeker","email":"george.eker@hotmail.co.uk"},{"name":"msjhall","email":"m.hall@kainos.com"},{"name":"samchatfield","email":"samchatfield97@gmail.com"}],"nyc":{"all":true,"lines":100,"exclude":["example/**","coverage/**","test/**"],"branches":100,"reporter":["text-summary","text","lcov"],"functions":100,"skip-full":true,"statements":100,"check-coverage":true,"temp-directory":"coverage/.nyc_output"},"dist":{"shasum":"b9ff952ea29fd95a521d63c33787c9bc63064bb5","tarball":"https://registry.npmjs.org/hmpo-app/-/hmpo-app-3.0.2.tgz","fileCount":67,"integrity":"sha512-FBhdZ3ruJKJMSnQQxLFAORoc4SEFIRxIKb758UXY+KtffCChfnmvzE4vHGZ2vPKEpKHr3/MjfO2jgI4Exup4hQ==","signatures":[{"sig":"MEUCIQC9LsUStAXKQch37AbakNXQZdF067k5UP3iSSxdj3FOuAIgOGvglVUYJZJH49YPV7bJ5Zfo5zu7r+rZGiSt49TSzws=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":137410},"main":"index.js","mocha":{"spec":"test/unit/**/spec.*.js","require":"test/unit/helper"},"engines":{"node":">=14"},"gitHead":"a3eba3a5495ddb7c337052e57054e5df9ec03bdc","private":false,"scripts":{"test":"npm run test:unit","prepare":"husky install","pretest":"npm run test:lint","posttest":"npm audit","test:lint":"eslint .","test:unit":"nyc _mocha"},"_npmUser":{"name":"samchatfield","email":"samchatfield97@gmail.com"},"_npmVersion":"10.7.0","description":"Bootstrap middleware and templating","directories":{},"_nodeVersion":"18.20.4","dependencies":{"uuid":"^9.0.1","async":"^3.2.5","debug":"^4.3.4","redis":"^4.7.0","helmet":"^6.2.0","nocache":"^3.0.4","fakeredis":"^2.0.0","frameguard":"^4.0.0","underscore":"^1.13.7","body-parser":"^1.20.2","compression":"^1.7.4","on-finished":"^2.4.1","connect-redis":"^6.1.3","cookie-parser":"^1.4.6","express-session":"^1.18.0","deep-clone-merge":"^1.5.5"},"engineStrict":true,"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.0.0","chai":"^4.5.0","husky":"^8.0.3","mocha":"^10.7.0","sinon":"^18.0.0","eslint":"^8.57.0","reqres":"^3.0.1","express":"^4.19.2","nunjucks":"^3.2.4","hmpo-i18n":"^6.0.2","proxyquire":"^2.1.3","sinon-chai":"^3.7.0","hmpo-config":"^3.0.1","hmpo-logger":"^7.0.2","govuk-frontend":"^4.8.0","hmpo-components":"^6.5.1"},"peerDependencies":{"express":">=4","nunjucks":">=3","hmpo-i18n":">=6","hmpo-config":">=3","hmpo-logger":">=7","govuk-frontend":">=4","hmpo-components":">=6"},"optionalDependencies":{"fsevents":"~2.3.3"},"_npmOperationalInternal":{"tmp":"tmp/hmpo-app_3.0.2_1722588104162_0.81985867025458","host":"s3://npm-registry-packages"}},"4.0.0":{"name":"hmpo-app","version":"4.0.0","author":{"name":"HMPO"},"license":"MIT","_id":"hmpo-app@4.0.0","maintainers":[{"name":"georgeeker","email":"george.eker@hotmail.co.uk"},{"name":"msjhall","email":"m.hall@kainos.com"},{"name":"samchatfield","email":"samchatfield97@gmail.com"},{"name":"rewaz.ismail","email":"rewaz96@hotmail.com"}],"nyc":{"all":true,"lines":100,"exclude":["example/**","coverage/**","test/**","eslint.config.js"],"branches":100,"reporter":["text-summary","text","lcov"],"functions":100,"skip-full":true,"statements":100,"check-coverage":true,"temp-directory":"coverage/.nyc_output"},"dist":{"shasum":"8a542a2c62efbc29e3ac2acb2351573b6985ffbf","tarball":"https://registry.npmjs.org/hmpo-app/-/hmpo-app-4.0.0.tgz","fileCount":88,"integrity":"sha512-HzZEgVUMAXYTJ4HRsofzobjQ67W/+SMuWRdHXdc5gOerF9CIjFrd45f/vhSf6iTXjZJuWcDsA70kKz8++fNliQ==","signatures":[{"sig":"MEUCIQCFX5ILEitPJQQCDQcbQIgvDpp6mywgNQOta/bzHUyEPwIgdJGXNqqxF16g5xxiGMXg7x5wa/ZwGFwYHtPdM3nTl+A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156734},"main":"index.js","mocha":{"spec":"test/unit/**/spec.*.js","require":"test/unit/helper"},"engines":{"node":"20.x || 22.x"},"gitHead":"0f3a499bf1d8462cf69073c567cf42fe65e6ec8e","private":false,"scripts":{"test":"npm run test:unit","prepare":"husky","pretest":"npm run test:lint","posttest":"npm audit","test:lint":"eslint .","test:unit":"nyc _mocha"},"_npmUser":{"name":"rewaz.ismail","email":"rewaz96@hotmail.com"},"_npmVersion":"10.9.0","description":"Bootstrap middleware and templating","directories":{},"_nodeVersion":"22.9.0","dependencies":{"uuid":"^10.0.0","async":"^3.2.6","debug":"^4.3.7","redis":"^4.7.0","helmet":"^8.0.0","nocache":"^3.0.4","fakeredis":"^2.0.0","frameguard":"^4.0.0","underscore":"^1.13.7","body-parser":"^1.20.3","compression":"^1.7.4","on-finished":"^2.4.1","connect-redis":"^6.1.3","cookie-parser":"^1.4.6","express-session":"^1.18.0","deep-clone-merge":"^1.5.5"},"engineStrict":true,"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.5.0","husky":"^9.1.6","mocha":"^10.7.3","sinon":"^19.0.2","eslint":"^9.11.1","express":"^4.21.0","globals":"^15.11.0","nunjucks":"^3.2.4","hmpo-i18n":"^7.0.0","proxyquire":"^2.1.3","sinon-chai":"^3.7.0","hmpo-config":"^4.0.0","hmpo-logger":"^8.0.0","hmpo-reqres":"^2.0.0","govuk-frontend":"^4.8.0","hmpo-components":"^7.0.1"},"peerDependencies":{"express":">=4","nunjucks":">=3","hmpo-i18n":">=7","hmpo-config":">=4","hmpo-logger":">=8","govuk-frontend":">=4","hmpo-components":">=7"},"optionalDependencies":{"fsevents":"~2.3.3"},"_npmOperationalInternal":{"tmp":"tmp/hmpo-app_4.0.0_1730198014634_0.27497024174688245","host":"s3://npm-registry-packages"}},"4.0.1":{"name":"hmpo-app","version":"4.0.1","author":{"name":"HMPO"},"license":"MIT","_id":"hmpo-app@4.0.1","maintainers":[{"name":"georgeeker","email":"george.eker@hotmail.co.uk"},{"name":"msjhall","email":"m.hall@kainos.com"},{"name":"samchatfield","email":"samchatfield97@gmail.com"},{"name":"rewaz.ismail","email":"rewaz96@hotmail.com"},{"name":"rcrabtree-hmpo","email":"robert.crabtree@digital.homeoffice.gov.uk"}],"nyc":{"all":true,"lines":100,"exclude":["example/**","coverage/**","test/**","eslint.config.js"],"branches":100,"reporter":["text-summary","text","lcov"],"functions":100,"skip-full":true,"statements":100,"check-coverage":true,"temp-directory":"coverage/.nyc_output"},"dist":{"shasum":"dfb12c45e4d8c6a187c7a72f5990157dd92fe9ca","tarball":"https://registry.npmjs.org/hmpo-app/-/hmpo-app-4.0.1.tgz","fileCount":91,"integrity":"sha512-kG8e9EumO1f0tUwOuJS5AaO9TW5rDEsdzaqhb3kOMAFKZkJN2LIKkP/D+Lm22rCyhm26G/10h0ieGuB45TAQxQ==","signatures":[{"sig":"MEUCIHlhvozycOW3cNwO4t6CTmy/ro0kZHqKeOTpJhUtWoHFAiEAw8wRQoPDbDalIx1UZwGV5MgV3xXN37v4Ls+7k+cXdZo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":187964},"main":"index.js","mocha":{"spec":"test/unit/**/spec.*.js","require":"test/unit/helper"},"engines":{"node":"20.x || 22.x"},"gitHead":"f80cc04673405b6452ccdb2c14a9dc62848d9987","private":false,"scripts":{"test":"npm run test:unit","prepare":"husky","pretest":"npm run test:lint","posttest":"npm audit","test:lint":"eslint .","test:unit":"nyc _mocha"},"_npmUser":{"name":"rcrabtree-hmpo","email":"robert.crabtree@digital.homeoffice.gov.uk"},"_npmVersion":"10.2.4","description":"Bootstrap middleware and templating","directories":{},"_nodeVersion":"20.11.1","dependencies":{"uuid":"^10.0.0","async":"^3.2.6","debug":"^4.3.7","redis":"^4.7.0","helmet":"^8.0.0","nocache":"^3.0.4","fakeredis":"^2.0.0","frameguard":"^4.0.0","underscore":"^1.13.7","body-parser":"^1.20.3","compression":"^1.7.4","on-finished":"^2.4.1","connect-redis":"^6.1.3","cookie-parser":"^1.4.6","express-session":"^1.18.0","deep-clone-merge":"^1.5.5"},"engineStrict":true,"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.5.0","husky":"^9.1.6","mocha":"^10.7.3","sinon":"^19.0.2","eslint":"^9.11.1","express":"^4.21.0","globals":"^15.11.0","nunjucks":"^3.2.4","hmpo-i18n":"^7.0.0","proxyquire":"^2.1.3","sinon-chai":"^3.7.0","hmpo-config":"^4.0.0","hmpo-logger":"^8.0.0","hmpo-reqres":"^2.0.0","govuk-frontend":"^4.8.0","hmpo-components":"^7.0.1"},"peerDependencies":{"express":">=4","nunjucks":">=3","hmpo-i18n":">=7","hmpo-config":">=4","hmpo-logger":">=8","govuk-frontend":">=4","hmpo-components":">=7"},"optionalDependencies":{"fsevents":"~2.3.3"},"_npmOperationalInternal":{"tmp":"tmp/hmpo-app_4.0.1_1746782164615_0.5244540772241564","host":"s3://npm-registry-packages-npm-production"}},"5.0.0":{"name":"hmpo-app","version":"5.0.0","author":{"name":"HMPO"},"license":"MIT","_id":"hmpo-app@5.0.0","maintainers":[{"name":"georgeeker","email":"george.eker@hotmail.co.uk"},{"name":"msjhall","email":"m.hall@kainos.com"},{"name":"samchatfield","email":"samchatfield97@gmail.com"},{"name":"rewaz.ismail","email":"rewaz96@hotmail.com"},{"name":"rcrabtree-hmpo","email":"robert.crabtree@digital.homeoffice.gov.uk"},{"name":"cmcgee480","email":"conor.mcgee@digital.homeoffice.gov.uk"}],"nyc":{"all":true,"lines":100,"exclude":["example/**","coverage/**","test/**","eslint.config.js"],"branches":100,"reporter":["text-summary","text","lcov"],"functions":100,"skip-full":true,"statements":100,"check-coverage":true,"temp-directory":"coverage/.nyc_output"},"dist":{"shasum":"a9bb22b5b910658fee1125a9c200be28d95af344","tarball":"https://registry.npmjs.org/hmpo-app/-/hmpo-app-5.0.0.tgz","fileCount":91,"integrity":"sha512-OpuedP1WY96j8Z29qW3XbSfAToPlFyCeHtlbuspNDkiJ2XNtf2EMvdwnX5aPqQjD8kd2p/T122jY64JFaYEczg==","signatures":[{"sig":"MEYCIQDTyehkySYj+MJ7p6ntx0jjxCo2K3yABMJdw/ppG+dBXgIhAPIx/pJ45PHNUp2FpI4BiBuMtC8xIgME3UeFzaq/vHGA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188236},"main":"index.js","mocha":{"spec":"test/unit/**/spec.*.js","require":"test/unit/helper"},"engines":{"node":"20.x || 22.x"},"gitHead":"7b1d26e84f0783fc02195f76b7080647a0d70af6","private":false,"scripts":{"test":"npm run test:unit","prepare":"husky","pretest":"npm run test:lint","posttest":"npm audit","test:lint":"eslint .","test:unit":"nyc _mocha"},"_npmUser":{"name":"cmcgee480","email":"conor.mcgee@digital.homeoffice.gov.uk"},"deprecated":"This version is deprecated due to lack of ESM support for govuk-frontend v5. Please use v5.0.2 or later.","_npmVersion":"10.1.0","description":"Bootstrap middleware and templating","directories":{},"_nodeVersion":"20.9.0","dependencies":{"uuid":"^10.0.0","async":"^3.2.6","debug":"^4.3.7","redis":"^4.7.0","helmet":"^8.0.0","nocache":"^3.0.4","fakeredis":"^2.0.0","frameguard":"^4.0.0","underscore":"^1.13.7","body-parser":"^1.20.3","compression":"^1.7.4","on-finished":"^2.4.1","connect-redis":"^6.1.3","cookie-parser":"^1.4.6","express-session":"^1.18.0","deep-clone-merge":"^1.5.5"},"engineStrict":true,"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.5.0","husky":"^9.1.6","mocha":"^10.7.3","sinon":"^19.0.2","eslint":"^9.11.1","express":"^4.21.0","globals":"^15.11.0","nunjucks":"^3.2.4","hmpo-i18n":"^7.0.0","proxyquire":"^2.1.3","sinon-chai":"^3.7.0","hmpo-config":"^4.0.0","hmpo-logger":"^8.0.0","hmpo-reqres":"^2.0.0","govuk-frontend":"^5.10.2","hmpo-components":"^8.0.0"},"peerDependencies":{"express":">=4","nunjucks":">=3","hmpo-i18n":">=7","hmpo-config":">=4","hmpo-logger":">=8","govuk-frontend":">=5","hmpo-components":">=8"},"optionalDependencies":{"fsevents":"~2.3.3"},"_npmOperationalInternal":{"tmp":"tmp/hmpo-app_5.0.0_1748882208227_0.19525922886447478","host":"s3://npm-registry-packages-npm-production"}},"5.0.1":{"name":"hmpo-app","version":"5.0.1","author":{"name":"HMPO"},"license":"MIT","_id":"hmpo-app@5.0.1","maintainers":[{"name":"georgeeker","email":"george.eker@hotmail.co.uk"},{"name":"msjhall","email":"m.hall@kainos.com"},{"name":"samchatfield","email":"samchatfield97@gmail.com"},{"name":"rewaz.ismail","email":"rewaz96@hotmail.com"},{"name":"rcrabtree-hmpo","email":"robert.crabtree@digital.homeoffice.gov.uk"},{"name":"cmcgee480","email":"conor.mcgee@digital.homeoffice.gov.uk"}],"nyc":{"all":true,"lines":100,"exclude":["example/**","coverage/**","test/**","eslint.config.js"],"branches":100,"reporter":["text-summary","text","lcov"],"functions":100,"skip-full":true,"statements":100,"check-coverage":true,"temp-directory":"coverage/.nyc_output"},"dist":{"shasum":"3524936de5f195ae4c229a87acd222e497a2c37c","tarball":"https://registry.npmjs.org/hmpo-app/-/hmpo-app-5.0.1.tgz","fileCount":91,"integrity":"sha512-9s+25szAtLrGjVqkQZxQUzrdAvACPqi2X2ONFC4p8xLvY6xMxjvjnsr4ZRS1DMYX4PF2fgb3k+FRKlikoivafg==","signatures":[{"sig":"MEUCIQCq+ehYz+nWEw8D081l3KxrZNE/QRRLBmbwrhqS2srueAIgPkyGTnoCbUWs0r6Li0Z78U5ftuz8GPbd9aJ9WS5ybgQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188236},"main":"index.js","mocha":{"spec":"test/unit/**/spec.*.js","require":"test/unit/helper"},"engines":{"node":"20.x || 22.x"},"gitHead":"baf4f83245272f7d00bae24e6e2fc4c621d316f2","private":false,"scripts":{"test":"npm run test:unit","prepare":"husky","pretest":"npm run test:lint","posttest":"npm audit","test:lint":"eslint .","test:unit":"nyc _mocha"},"_npmUser":{"name":"cmcgee480","email":"conor.mcgee@digital.homeoffice.gov.uk"},"deprecated":"This version is deprecated due to lack of ESM support for govuk-frontend v5. Please use v5.0.2 or later.","_npmVersion":"10.1.0","description":"Bootstrap middleware and templating","directories":{},"_nodeVersion":"20.9.0","dependencies":{"uuid":"^10.0.0","async":"^3.2.6","debug":"^4.3.7","redis":"^4.7.0","helmet":"^8.0.0","nocache":"^3.0.4","fakeredis":"^2.0.0","frameguard":"^4.0.0","underscore":"^1.13.7","body-parser":"^1.20.3","compression":"^1.7.4","on-finished":"^2.4.1","connect-redis":"^6.1.3","cookie-parser":"^1.4.6","express-session":"^1.18.0","deep-clone-merge":"^1.5.5"},"engineStrict":true,"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.5.0","husky":"^9.1.6","mocha":"^10.7.3","sinon":"^19.0.2","eslint":"^9.11.1","express":"^4.21.0","globals":"^15.11.0","nunjucks":"^3.2.4","hmpo-i18n":"^7.0.0","proxyquire":"^2.1.3","sinon-chai":"^3.7.0","hmpo-config":"^4.0.0","hmpo-logger":"^8.0.0","hmpo-reqres":"^2.0.0","govuk-frontend":"^5.10.2","hmpo-components":"^8.0.1"},"peerDependencies":{"express":">=4","nunjucks":">=3","hmpo-i18n":">=7","hmpo-config":">=4","hmpo-logger":">=8","govuk-frontend":">=5","hmpo-components":">=8"},"optionalDependencies":{"fsevents":"~2.3.3"},"_npmOperationalInternal":{"tmp":"tmp/hmpo-app_5.0.1_1748951988091_0.16867329457926528","host":"s3://npm-registry-packages-npm-production"}},"5.0.2":{"name":"hmpo-app","version":"5.0.2","author":{"name":"HMPO"},"license":"MIT","_id":"hmpo-app@5.0.2","maintainers":[{"name":"georgeeker","email":"george.eker@hotmail.co.uk"},{"name":"msjhall","email":"m.hall@kainos.com"},{"name":"samchatfield","email":"samchatfield97@gmail.com"},{"name":"rewaz.ismail","email":"rewaz96@hotmail.com"},{"name":"rcrabtree-hmpo","email":"robert.crabtree@digital.homeoffice.gov.uk"},{"name":"cmcgee480","email":"conor.mcgee@digital.homeoffice.gov.uk"}],"nyc":{"all":true,"lines":100,"exclude":["example/**","coverage/**","test/**","eslint.config.js"],"branches":100,"reporter":["text-summary","text","lcov"],"functions":100,"skip-full":true,"statements":100,"check-coverage":true,"temp-directory":"coverage/.nyc_output"},"dist":{"shasum":"9fb25164ced1e52a38c8146cec8faf5923ad799c","tarball":"https://registry.npmjs.org/hmpo-app/-/hmpo-app-5.0.2.tgz","fileCount":92,"integrity":"sha512-Mv3ctMrjEKMiz/SvaNbzPdz4w06bVSZYT0R1n4aQZOHWwm1xQ3a3WrC62wiaK7nCpptftjjR6aTYZnP79Wd+5A==","signatures":[{"sig":"MEQCIDg8bxs8D+gE6pDiqKKQA7beyZQP0oqKNgw7BELaErJiAiApRkPhvuIGeTq1opjK8OBTdLmvOc/eE2zAldEFiKb3kQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":191095},"main":"index.js","mocha":{"spec":"test/unit/**/spec.*.js","require":"test/unit/helper"},"engines":{"node":"20.x || 22.x"},"gitHead":"b72e43d714fb99e14b06478878b7d1cdc59720d6","private":false,"scripts":{"test":"npm run test:unit","prepare":"husky","pretest":"npm run test:lint","posttest":"npm audit","test:lint":"eslint .","test:unit":"nyc _mocha"},"_npmUser":{"name":"cmcgee480","email":"conor.mcgee@digital.homeoffice.gov.uk"},"_npmVersion":"10.1.0","description":"Bootstrap middleware and templating","directories":{},"_nodeVersion":"20.9.0","dependencies":{"uuid":"^10.0.0","async":"^3.2.6","debug":"^4.3.7","redis":"^4.7.0","helmet":"^8.0.0","nocache":"^3.0.4","fakeredis":"^2.0.0","frameguard":"^4.0.0","underscore":"^1.13.7","body-parser":"^1.20.3","compression":"^1.7.4","on-finished":"^2.4.1","connect-redis":"^6.1.3","cookie-parser":"^1.4.6","express-session":"^1.18.0","deep-clone-merge":"^1.5.5"},"engineStrict":true,"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.5.0","husky":"^9.1.6","mocha":"^10.7.3","sinon":"^19.0.2","eslint":"^9.11.1","express":"^4.21.0","globals":"^15.11.0","nunjucks":"^3.2.4","hmpo-i18n":"^7.0.0","proxyquire":"^2.1.3","sinon-chai":"^3.7.0","hmpo-config":"^4.0.0","hmpo-logger":"^8.0.0","hmpo-reqres":"^2.0.0","govuk-frontend":"^5.10.2","hmpo-components":"^8.0.2"},"peerDependencies":{"express":">=4","nunjucks":">=3","hmpo-i18n":">=7","hmpo-config":">=4","hmpo-logger":">=8","govuk-frontend":">=5","hmpo-components":">=8"},"optionalDependencies":{"fsevents":"~2.3.3"},"_npmOperationalInternal":{"tmp":"tmp/hmpo-app_5.0.2_1749545866089_0.7204354883947244","host":"s3://npm-registry-packages-npm-production"}},"5.0.3":{"name":"hmpo-app","version":"5.0.3","author":{"name":"HMPO"},"license":"MIT","_id":"hmpo-app@5.0.3","maintainers":[{"name":"georgeeker","email":"george.eker@hotmail.co.uk"},{"name":"msjhall","email":"michael.hall@digital.homeoffice.gov.uk"},{"name":"samchatfield","email":"samchatfield97@gmail.com"},{"name":"rewaz.ismail","email":"rewaz96@hotmail.com"},{"name":"rcrabtree-hmpo","email":"robert.crabtree@digital.homeoffice.gov.uk"},{"name":"cmcgee480","email":"conor.mcgee@digital.homeoffice.gov.uk"}],"nyc":{"all":true,"lines":100,"exclude":["example/**","coverage/**","test/**","eslint.config.js"],"branches":100,"reporter":["text-summary","text","lcov"],"functions":100,"skip-full":true,"statements":100,"check-coverage":true,"temp-directory":"coverage/.nyc_output"},"dist":{"shasum":"74ad2ec9787ff9f8e720b8f22444e84cf1eb7426","tarball":"https://registry.npmjs.org/hmpo-app/-/hmpo-app-5.0.3.tgz","fileCount":92,"integrity":"sha512-y0lPWSwuGXuOF5NWMDEldmbFqVNNs6RQuitXRCY2cAwUbGZDLx5Tg87+Ei412BBYfQZ20BgIQSpImVkh50FR8g==","signatures":[{"sig":"MEUCIHqEAJN28PEfSnrs+RUfSiNQDGFO1fMYEMpNkABCPxMfAiEA0OPRnE9bmeUsBQgh7ug1SuC+3RbaWBJj4ad3l/s2IfM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":191137},"main":"index.js","mocha":{"spec":"test/unit/**/spec.*.js","require":"test/unit/helper"},"engines":{"node":"20.x || 22.x"},"gitHead":"c09b9e9ab1f3ca062412f7364874acb77bbb1f1b","private":false,"scripts":{"test":"npm run test:unit","prepare":"husky","pretest":"npm run test:lint","posttest":"npm audit","test:lint":"eslint .","test:unit":"nyc _mocha"},"_npmUser":{"name":"msjhall","actor":{"name":"msjhall","type":"user","email":"michael.hall@digital.homeoffice.gov.uk"},"email":"michael.hall@digital.homeoffice.gov.uk"},"_npmVersion":"10.9.2","description":"Bootstrap middleware and templating","directories":{},"_nodeVersion":"22.14.0","dependencies":{"uuid":"^10.0.0","async":"^3.2.6","debug":"^4.3.7","redis":"^4.7.0","helmet":"^8.0.0","nocache":"^3.0.4","fakeredis":"^2.0.0","frameguard":"^4.0.0","underscore":"^1.13.7","body-parser":"^1.20.3","compression":"^1.7.4","on-finished":"^2.4.1","connect-redis":"^6.1.3","cookie-parser":"^1.4.6","express-session":"^1.18.0","deep-clone-merge":"^1.5.5"},"engineStrict":true,"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.5.0","husky":"^9.1.6","mocha":"^10.7.3","sinon":"^19.0.2","eslint":"^9.11.1","express":"^4.21.0","globals":"^15.11.0","nunjucks":"^3.2.4","hmpo-i18n":"^7.0.0","proxyquire":"^2.1.3","sinon-chai":"^3.7.0","hmpo-config":"^4.0.0","hmpo-logger":"^8.0.0","hmpo-reqres":"^2.0.0","govuk-frontend":"^5.10.2","hmpo-components":"^8.0.2"},"peerDependencies":{"express":">=4","nunjucks":">=3","hmpo-i18n":">=7","hmpo-config":">=4","hmpo-logger":">=8","govuk-frontend":">=5","hmpo-components":">=8"},"optionalDependencies":{"fsevents":"~2.3.3"},"_npmOperationalInternal":{"tmp":"tmp/hmpo-app_5.0.3_1750856085519_0.3182434903588556","host":"s3://npm-registry-packages-npm-production"}},"5.0.5":{"name":"hmpo-app","version":"5.0.5","author":{"name":"HMPO"},"license":"MIT","_id":"hmpo-app@5.0.5","maintainers":[{"name":"georgeeker","email":"george.eker@hotmail.co.uk"},{"name":"msjhall","email":"michael.hall@digital.homeoffice.gov.uk"},{"name":"samchatfield","email":"samchatfield97@gmail.com"},{"name":"rewaz.ismail","email":"rewaz96@hotmail.com"},{"name":"rcrabtree-hmpo","email":"robert.crabtree@digital.homeoffice.gov.uk"},{"name":"cmcgee480","email":"conor.mcgee@digital.homeoffice.gov.uk"},{"name":"ntotten-hmpo","email":"nathan.totten@digital.homeoffice.gov.uk"}],"nyc":{"all":true,"lines":100,"exclude":["example/**","coverage/**","test/**","eslint.config.js"],"branches":100,"reporter":["text-summary","text","lcov"],"functions":100,"skip-full":true,"statements":100,"check-coverage":true,"temp-directory":"coverage/.nyc_output"},"dist":{"shasum":"f027ccd8c0a951484c7cc10ac52b9330978bfc74","tarball":"https://registry.npmjs.org/hmpo-app/-/hmpo-app-5.0.5.tgz","fileCount":92,"integrity":"sha512-Iz4tq/tCcGoD7jdptl15zWpECjWpQrXllssVTIPQCT58UhoykS4Zj2k0Cst+9k7SXxDkVFzjk4BotYrpfD7P1g==","signatures":[{"sig":"MEUCIBufUKuRQTP/TDamS/8xgNEiNrl1d30XFJfp6j2uROgkAiEAvrxTBihtvavbb70GnC+52RxuN03cS4avHIk3i5tY08I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":191145},"main":"index.js","mocha":{"spec":"test/unit/**/spec.*.js","require":"test/unit/helper"},"engines":{"node":"20.x || 22.x"},"gitHead":"320c8c004ccc733747b3b4f41cbf8d8a93f64414","private":false,"scripts":{"test":"npm run test:unit","prepare":"husky","pretest":"npm run test:lint","posttest":"npm audit","test:lint":"eslint .","test:unit":"nyc _mocha"},"_npmUser":{"name":"cmcgee480","actor":{"name":"cmcgee480","type":"user","email":"conor.mcgee@digital.homeoffice.gov.uk"},"email":"conor.mcgee@digital.homeoffice.gov.uk"},"_npmVersion":"10.2.5","description":"Bootstrap middleware and templating","directories":{},"_nodeVersion":"18.18.2","dependencies":{"uuid":"^10.0.0","async":"^3.2.6","debug":"^4.3.7","redis":"^4.7.0","helmet":"^8.0.0","nocache":"^3.0.4","fakeredis":"^2.0.0","frameguard":"^4.0.0","underscore":"^1.13.7","body-parser":"^1.20.3","compression":"^1.7.4","on-finished":"^2.4.1","connect-redis":"^6.1.3","cookie-parser":"^1.4.6","express-session":"^1.18.0","deep-clone-merge":"^1.5.5"},"engineStrict":true,"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.5.0","husky":"^9.1.6","mocha":"^10.7.3","sinon":"^19.0.2","eslint":"^9.11.1","express":"^4.21.0","globals":"^15.11.0","nunjucks":"^3.2.4","hmpo-i18n":"^7.0.0","proxyquire":"^2.1.3","sinon-chai":"^3.7.0","hmpo-config":"^4.0.0","hmpo-logger":"^8.0.0","hmpo-reqres":"^2.0.0","govuk-frontend":"^5.10.2","hmpo-components":"^8.0.2"},"peerDependencies":{"express":">=4","nunjucks":">=3","hmpo-i18n":">=7","hmpo-config":">=4","hmpo-logger":">=8","govuk-frontend":">=5","hmpo-components":">=8"},"optionalDependencies":{"fsevents":"~2.3.3"},"_npmOperationalInternal":{"tmp":"tmp/hmpo-app_5.0.5_1751635142401_0.041314001166484315","host":"s3://npm-registry-packages-npm-production"}},"5.0.6":{"name":"hmpo-app","version":"5.0.6","author":{"name":"HMPO"},"license":"MIT","_id":"hmpo-app@5.0.6","maintainers":[{"name":"georgeeker","email":"george.eker@hotmail.co.uk"},{"name":"msjhall","email":"michael.hall@digital.homeoffice.gov.uk"},{"name":"samchatfield","email":"samchatfield97@gmail.com"},{"name":"rewaz.ismail","email":"rewaz96@hotmail.com"},{"name":"rcrabtree-hmpo","email":"robert.crabtree@digital.homeoffice.gov.uk"},{"name":"cmcgee480","email":"conor.mcgee@digital.homeoffice.gov.uk"},{"name":"ntotten-hmpo","email":"nathan.totten@digital.homeoffice.gov.uk"}],"nyc":{"all":true,"lines":100,"exclude":["example/**","coverage/**","test/**","eslint.config.js"],"branches":100,"reporter":["text-summary","text","lcov"],"functions":100,"skip-full":true,"statements":100,"check-coverage":true,"temp-directory":"coverage/.nyc_output"},"dist":{"shasum":"5d3b046effa1e66181d0ff5f956acb431e98a418","tarball":"https://registry.npmjs.org/hmpo-app/-/hmpo-app-5.0.6.tgz","fileCount":92,"integrity":"sha512-p+3zRt8Fx8QICU+iwGiJ5LiTIPqy/h3CDKPDm2zlmX6TaYHNgoEQVzTZywQYfVHQEzMeH9k6Xnwoeq9msM0R7Q==","signatures":[{"sig":"MEQCIHbhYd4X1JtVn3GMfCggmxFKoG3Ct4ZRkistM1yj268RAiBm7YIhYABdQPhroKf101MDIUlSUKAzQxtPpJ1wLJ6vUA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":192853},"main":"index.js","mocha":{"spec":"test/unit/**/spec.*.js","require":"test/unit/helper"},"engines":{"node":"20.x || 22.x"},"gitHead":"c46f34214d53e8983eda24dfeb2f2800b1eaed17","private":false,"scripts":{"test":"npm run test:unit","prepare":"husky","pretest":"npm run test:lint","posttest":"npm audit --registry='https://registry.npmjs.org'","test:lint":"eslint .","test:unit":"nyc _mocha"},"_npmUser":{"name":"cmcgee480","email":"conor.mcgee@digital.homeoffice.gov.uk"},"_npmVersion":"10.1.0","description":"Bootstrap middleware and templating","directories":{},"_nodeVersion":"20.9.0","dependencies":{"uuid":"^10.0.0","async":"^3.2.6","debug":"^4.3.7","redis":"^4.7.0","helmet":"^8.0.0","nocache":"^3.0.4","fakeredis":"^2.0.0","frameguard":"^4.0.0","underscore":"^1.13.7","body-parser":"^1.20.3","compression":"^1.7.4","on-finished":"^2.4.1","connect-redis":"^6.1.3","cookie-parser":"^1.4.6","express-session":"^1.18.0","deep-clone-merge":"^1.5.5"},"engineStrict":true,"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.5.0","husky":"^9.1.6","mocha":"^10.7.3","sinon":"^19.0.2","eslint":"^9.11.1","express":"^4.21.0","globals":"^15.11.0","nunjucks":"^3.2.4","hmpo-i18n":"^7.0.0","proxyquire":"^2.1.3","sinon-chai":"^3.7.0","hmpo-config":"^4.0.0","hmpo-logger":"^8.0.0","hmpo-reqres":"^2.0.0","govuk-frontend":"^5.10.2","hmpo-components":"^8.0.2"},"peerDependencies":{"express":">=4","nunjucks":">=3","hmpo-i18n":">=7","hmpo-config":">=4","hmpo-logger":">=8","govuk-frontend":">=5","hmpo-components":">=8"},"optionalDependencies":{"fsevents":"~2.3.3"},"_npmOperationalInternal":{"tmp":"tmp/hmpo-app_5.0.6_1756294809374_0.7496996978778203","host":"s3://npm-registry-packages-npm-production"}},"5.0.7":{"name":"hmpo-app","version":"5.0.7","author":{"name":"HMPO"},"license":"MIT","_id":"hmpo-app@5.0.7","maintainers":[{"name":"georgeeker","email":"george.eker@hotmail.co.uk"},{"name":"moreilly5","email":"matthewdoreilly@gmail.com"},{"name":"m24murray","email":"matthewmu@kainos.com"},{"name":"cmcgee480","email":"conor.mcgee@digital.homeoffice.gov.uk"},{"name":"radovan-d-ho","email":"Radovan.Dacej@digital.homeoffice.gov.uk"}],"nyc":{"all":true,"lines":100,"exclude":["example/**","coverage/**","test/**","eslint.config.js"],"branches":100,"reporter":["text-summary","text","lcov"],"functions":100,"skip-full":true,"statements":100,"check-coverage":true,"temp-directory":"coverage/.nyc_output"},"dist":{"shasum":"09ecaeadcf9fa8ec5485880eba1cb20a5b975680","tarball":"https://registry.npmjs.org/hmpo-app/-/hmpo-app-5.0.7.tgz","fileCount":92,"integrity":"sha512-lFSlkr4PErarFtgZgtKBHKbw3aJNHgzR4DqLzmknEq+cBufXiD0mSV5gfKIKoAVWRh33S/IRPs9va6fXsNyp4w==","signatures":[{"sig":"MEUCIANPojfgANKpZwZmp0viFeH4kJE4hLsgEz9M31HkiIMMAiEAyccVgM5An4S/AnLvCxxhAwQFYhEI5lgQL5YGqhngOhc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":192852},"main":"index.js","mocha":{"spec":"test/unit/**/spec.*.js","require":"test/unit/helper"},"engines":{"node":"20.x || 22.x"},"gitHead":"2dcb7fbb1efc27d6bf17e858e575f384e5543ab2","private":false,"scripts":{"test":"npm run test:unit","prepare":"husky","pretest":"npm run test:lint","posttest":"npm audit --registry='https://registry.npmjs.org'","test:lint":"eslint .","test:unit":"nyc _mocha"},"_npmUser":{"name":"cmcgee480","email":"conor.mcgee@digital.homeoffice.gov.uk"},"_npmVersion":"10.1.0","description":"Bootstrap middleware and templating","directories":{},"_nodeVersion":"20.9.0","dependencies":{"uuid":"^10.0.0","async":"^3.2.6","debug":"4.3.7","redis":"^4.7.0","helmet":"^8.0.0","nocache":"^3.0.4","fakeredis":"^2.0.0","frameguard":"^4.0.0","underscore":"^1.13.7","body-parser":"^1.20.3","compression":"^1.7.4","on-finished":"^2.4.1","connect-redis":"^6.1.3","cookie-parser":"^1.4.6","express-session":"^1.18.0","deep-clone-merge":"^1.5.5"},"engineStrict":true,"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","chai":"^4.5.0","husky":"^9.1.6","mocha":"^10.7.3","sinon":"^19.0.2","eslint":"^9.11.1","express":"^4.21.0","globals":"^15.11.0","nunjucks":"^3.2.4","hmpo-i18n":"^7.0.0","proxyquire":"^2.1.3","sinon-chai":"^3.7.0","hmpo-config":"^4.0.1","hmpo-logger":"^8.0.2","hmpo-reqres":"^2.0.0","govuk-frontend":"^5.10.2","hmpo-components":"^8.0.2"},"peerDependencies":{"express":">=4","nunjucks":">=3","hmpo-i18n":">=7","hmpo-config":">=4","hmpo-logger":">=8","govuk-frontend":">=5","hmpo-components":">=8"},"optionalDependencies":{"fsevents":"~2.3.3"},"_npmOperationalInternal":{"tmp":"tmp/hmpo-app_5.0.7_1757492035552_0.8217075629576129","host":"s3://npm-registry-packages-npm-production"}},"6.0.0":{"name":"hmpo-app","version":"6.0.0","author":{"name":"HMPO"},"license":"MIT","_id":"hmpo-app@6.0.0","maintainers":[{"name":"ntotten-hmpo","email":"nathan.totten@digital.homeoffice.gov.uk"},{"name":"leonardobishop-hmpo","email":"leonardo.bishop@digital.homeoffice.gov.uk"},{"name":"lee.service","email":"lee.service@digital.homeoffice.gov.uk"},{"name":"fionajosephsamy_homeoffice","email":"FionaJoseph.Samy@digital.homeoffice.gov.uk"},{"name":"carl.mendoza","email":"carl.mendoza@digital.homeoffice.gov.uk"},{"name":"myles.muda","email":"myles.muda@digital.homeoffice.gov.uk"},{"name":"sam.dagnall","email":"sam.dagnall@digital.homeoffice.gov.uk"},{"name":"kmoorewilson","email":"kelly.moore@hotmail.co.uk"},{"name":"taylor.crawford","email":"taylor.crawford@digital.homeoffice.gov.uk"},{"name":"rhyad-zergane-ho-1","email":"rhyad.zergane1@digital.homeoffice.gov.uk"},{"name":"georgeeker","email":"george.eker@hotmail.co.uk"},{"name":"moreilly5","email":"matthewdoreilly@gmail.com"},{"name":"m24murray","email":"matthewmu@kainos.com"},{"name":"cmcgee480","email":"conor.mcgee@digital.homeoffice.gov.uk"},{"name":"radovan-d-ho","email":"Radovan.Dacej@digital.homeoffice.gov.uk"},{"name":"msjhall","email":"michael.hall@digital.homeoffice.gov.uk"}],"nyc":{"all":true,"lines":100,"exclude":["example/**","coverage/**","test/**","eslint.config.js"],"branches":100,"reporter":["text-summary","text","lcov"],"functions":100,"skip-full":true,"statements":100,"check-coverage":true,"temp-directory":"coverage/.nyc_output"},"dist":{"shasum":"91b73b11e338077dbc5ec7ab2d386b7953d21572","tarball":"https://registry.npmjs.org/hmpo-app/-/hmpo-app-6.0.0.tgz","fileCount":93,"integrity":"sha512-FknYwIgczT2K0TpynBXJrbu++nWFhyb+ZnSxBDD+EU8CKF9TXm5hjewvQLUhugUxrSbghXRbzjSWA/Gmgt152w==","signatures":[{"sig":"MEUCIFNJ0vpRcZNjSDW8LIP8HDn/QMa+cBIBB+5L644CqD0MAiEA4vLD4R2MW2f13la6nZ4XeKkBlgAvo3pqdpxXNnLztIs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":193158},"main":"index.js","mocha":{"spec":"test/unit/**/spec.*.js","require":"test/unit/helper"},"engines":{"node":"24.x"},"gitHead":"d12458e6e0cbb792f06c359ffa4be4e837f3cf56","private":false,"scripts":{"test":"npm run test:unit","prepare":"husky","pretest":"npm run test:lint","posttest":"npm audit --registry='https://registry.npmjs.org'","test:lint":"eslint .","test:unit":"nyc _mocha"},"_npmUser":{"name":"leonardobishop-hmpo","email":"leonardo.bishop@digital.homeoffice.gov.uk"},"overrides":{"mocha":{"diff":"^8.0.3","serialize-javascript":"^7.0.4"}},"_npmVersion":"11.10.1","description":"Bootstrap middleware and templating","directories":{},"_nodeVersion":"24.14.0","dependencies":{"uuid":"^13.0.0","async":"^3.2.6","debug":"4.4.3","redis":"^4.7.0","helmet":"^8.0.0","nocache":"^4.0.0","fakeredis":"^2.0.0","frameguard":"^4.0.0","underscore":"^1.13.8","body-parser":"^2.2.2","compression":"^1.7.4","on-finished":"^2.4.1","connect-redis":"^6.1.3","cookie-parser":"^1.4.6","express-session":"^1.19.0","deep-clone-merge":"^1.5.5"},"engineStrict":true,"_hasShrinkwrap":false,"devDependencies":{"nyc":"^18.0.0","chai":"^6.2.2","husky":"^9.1.6","mocha":"^11.7.5","sinon":"^21.0.3","eslint":"^10.0.3","express":"^4.21.0","globals":"^17.4.0","nunjucks":"^3.2.4","hmpo-i18n":"^8.0.0","@eslint/js":"^10.0.1","proxyquire":"^2.1.3","sinon-chai":"^4.0.1","hmpo-config":"^5.0.0","hmpo-logger":"^9.0.0","hmpo-reqres":"^3.0.0","govuk-frontend":"^5.10.2","hmpo-components":"^9.0.0"},"peerDependencies":{"express":">=4","nunjucks":">=3","hmpo-i18n":">=8","hmpo-config":">=5","hmpo-logger":">=9","govuk-frontend":">=5","hmpo-components":">=9"},"optionalDependencies":{"fsevents":"~2.3.3"},"_npmOperationalInternal":{"tmp":"tmp/hmpo-app_6.0.0_1774437172655_0.4657858997737916","host":"s3://npm-registry-packages-npm-production"}},"7.0.0":{"_id":"hmpo-app@7.0.0","nyc":{"all":true,"lines":100,"exclude":["example/**","coverage/**","test/**","eslint.config.js"],"branches":100,"reporter":["text-summary","text","lcov"],"functions":100,"skip-full":true,"statements":100,"check-coverage":true,"temp-directory":"coverage/.nyc_output"},"dist":{"shasum":"b344c5d1fdb99fc4804ccf8fb1aded2cb7ab8594","tarball":"https://registry.npmjs.org/hmpo-app/-/hmpo-app-7.0.0.tgz","fileCount":93,"integrity":"sha512-fquFEMo7rxtepYZKDBZRiyv0UPTEQJsXm3IiFxYcBOiF+0LEZxkXzJ4O/TR88Gi3tmSJy+mWbUjgaX+selgfUQ==","signatures":[{"sig":"MEUCIBciZ7ps8SKsW4+ec1JE2F2fuV45V6yLbfzHa3jTzoGYAiEApUK3JoNqoXXY1ytrDKWJG3gtnEQnwzx3Ol8NYVUtfAE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDdG+wok+i5Pz7GO8R6RfWiRS9O5exyEu2Dqqc1A0LP0gIhAK1QYAH+qS2cj4VkxF3UczM3OOPe5+cd1+yPDDNG2rbw"}],"unpackedSize":193244},"main":"index.js","name":"hmpo-app","mocha":{"spec":"test/unit/**/spec.*.js","require":"test/unit/helper"},"author":{"name":"HMPO"},"engines":{"node":"24.x"},"gitHead":"1c189cd0403a452a9cd4daf62a57824a455ea0cd","license":"MIT","private":false,"scripts":{"test":"npm run test:unit","prepare":"husky","pretest":"npm run test:lint","posttest":"npm audit --registry='https://registry.npmjs.org'","test:lint":"eslint .","test:unit":"nyc _mocha"},"version":"7.0.0","_npmUser":{"name":"cmcgee480","email":"conor.mcgee@digital.homeoffice.gov.uk"},"overrides":{"qs":"^6.16.0","mocha":{"diff":"^8.0.3","serialize-javascript":"^7.0.4"}},"_npmVersion":"11.9.0","description":"Bootstrap middleware and templating","directories":{},"maintainers":[{"name":"ntotten-hmpo","email":"nathan.totten@digital.homeoffice.gov.uk"},{"name":"leonardobishop-hmpo","email":"leonardo.bishop@digital.homeoffice.gov.uk"},{"name":"lee.service","email":"lee.service@digital.homeoffice.gov.uk"},{"name":"fionajosephsamy_homeoffice","email":"FionaJoseph.Samy@digital.homeoffice.gov.uk"},{"name":"carl.mendoza","email":"carl.mendoza@digital.homeoffice.gov.uk"},{"name":"myles.muda","email":"myles.muda@digital.homeoffice.gov.uk"},{"name":"sam.dagnall","email":"sam.dagnall@digital.homeoffice.gov.uk"},{"name":"kmoorewilson","email":"kelly.moore@hotmail.co.uk"},{"name":"taylor.crawford","email":"taylor.crawford@digital.homeoffice.gov.uk"},{"name":"rhyad-zergane-ho-1","email":"rhyad.zergane1@digital.homeoffice.gov.uk"},{"name":"georgeeker","email":"george.eker@hotmail.co.uk"},{"name":"moreilly5","email":"matthewdoreilly@gmail.com"},{"name":"m24murray","email":"matthewmu@kainos.com"},{"name":"cmcgee480","email":"conor.mcgee@digital.homeoffice.gov.uk"},{"name":"radovan-d-ho","email":"Radovan.Dacej@digital.homeoffice.gov.uk"},{"name":"msjhall","email":"michael.hall@digital.homeoffice.gov.uk"}],"_nodeVersion":"24.14.0","dependencies":{"uuid":"^13.0.0","async":"^3.2.6","debug":"4.4.3","redis":"^4.7.0","helmet":"^8.0.0","nocache":"^4.0.0","chokidar":"^3.3.0","fakeredis":"^2.0.0","frameguard":"^4.0.0","underscore":"^1.13.8","body-parser":"^2.2.2","compression":"^1.7.4","on-finished":"^2.4.1","connect-redis":"^6.1.3","cookie-parser":"^1.4.6","express-session":"^1.19.0","deep-clone-merge":"^1.5.5"},"engineStrict":true,"_hasShrinkwrap":false,"devDependencies":{"nyc":"^18.0.0","chai":"^6.2.2","husky":"^9.1.6","mocha":"^11.7.5","sinon":"^21.0.3","eslint":"^10.0.3","express":"^4.21.0","globals":"^17.4.0","nunjucks":"^3.2.4","hmpo-i18n":"^8.0.0","@eslint/js":"^10.0.1","proxyquire":"^2.1.3","sinon-chai":"^4.0.1","hmpo-config":"^5.0.0","hmpo-logger":"^9.0.0","hmpo-reqres":"^3.0.0","govuk-frontend":"6.5.0","hmpo-components":"^11.0.0"},"peerDependencies":{"express":">=4","nunjucks":">=3","hmpo-i18n":">=8","hmpo-config":">=5","hmpo-logger":">=9","govuk-frontend":">=6.5.0","hmpo-components":">=11"},"optionalDependencies":{"fsevents":"~2.3.3"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/hmpo-app_7.0.0_1790003094572_0.1014933236137967"}}},"time":{"created":"2021-05-21T08:39:12.613Z","modified":"2026-09-21T15:04:54.920Z","1.0.1":"2021-05-21T08:39:12.724Z","1.0.2":"2021-05-21T13:11:25.258Z","2.0.0":"2022-03-02T16:25:25.337Z","2.1.0":"2022-06-09T15:20:24.591Z","2.2.0":"2022-06-17T13:34:17.963Z","2.2.1":"2022-06-17T13:45:08.353Z","2.3.0":"2022-06-24T12:10:10.392Z","2.4.0":"2022-07-28T15:40:05.439Z","3.0.0":"2023-04-27T21:52:06.492Z","3.0.1":"2023-04-27T22:01:08.333Z","3.0.2":"2024-08-02T08:41:44.291Z","4.0.0":"2024-10-29T10:33:34.839Z","4.0.1":"2025-05-09T09:16:04.824Z","5.0.0":"2025-06-02T16:36:48.413Z","5.0.1":"2025-06-03T11:59:48.296Z","5.0.2":"2025-06-10T08:57:46.291Z","5.0.4":"2025-06-25T12:48:50.879Z","5.0.3":"2025-06-25T12:54:45.693Z","5.0.5":"2025-07-04T13:19:02.604Z","5.0.6":"2025-08-27T11:40:09.552Z","5.0.7":"2025-09-10T08:13:55.745Z","6.0.0":"2026-03-25T11:12:52.817Z","7.0.0":"2026-09-21T15:04:54.680Z"},"author":{"name":"HMPO"},"license":"MIT","description":"Bootstrap middleware and templating","maintainers":[{"name":"ntotten-hmpo","email":"nathan.totten@digital.homeoffice.gov.uk"},{"name":"leonardobishop-hmpo","email":"leonardo.bishop@digital.homeoffice.gov.uk"},{"name":"lee.service","email":"lee.service@digital.homeoffice.gov.uk"},{"name":"fionajosephsamy_homeoffice","email":"FionaJoseph.Samy@digital.homeoffice.gov.uk"},{"name":"carl.mendoza","email":"carl.mendoza@digital.homeoffice.gov.uk"},{"name":"myles.muda","email":"myles.muda@digital.homeoffice.gov.uk"},{"name":"sam.dagnall","email":"sam.dagnall@digital.homeoffice.gov.uk"},{"name":"kmoorewilson","email":"kelly.moore@hotmail.co.uk"},{"name":"taylor.crawford","email":"taylor.crawford@digital.homeoffice.gov.uk"},{"name":"rhyad-zergane-ho-1","email":"rhyad.zergane1@digital.homeoffice.gov.uk"},{"name":"georgeeker","email":"george.eker@hotmail.co.uk"},{"name":"moreilly5","email":"matthewdoreilly@gmail.com"},{"name":"m24murray","email":"matthewmu@kainos.com"},{"name":"cmcgee480","email":"conor.mcgee@digital.homeoffice.gov.uk"},{"name":"radovan-d-ho","email":"Radovan.Dacej@digital.homeoffice.gov.uk"},{"name":"msjhall","email":"michael.hall@digital.homeoffice.gov.uk"}],"readme":"\n# hmpo-app forms framework bootstrap\n\n> **NOTE:**\n> `hmpo-app` **v6.0.0 and above** uses [GOV.UK Frontend v6.5+](https://github.com/alphagov/govuk-frontend), which requires [ECMAScript Modules (ESM)](https://nodejs.org/api/esm.html) and a modern JavaScript bundler.\n>\n> ### How to Bundle ESM JavaScript\n>\n> You must use a JavaScript bundler (such as **Rollup**, **Webpack**, or **Vite**) that supports ESM.\n> Directly including these modules in `<script>` tags in browsers is **not supported**.\n>\n> **If your project or its dependencies use a mix of CommonJS (CJS) and ESM modules, you will need to configure Rollup with additional plugins to ensure everything is bundled correctly.**\n>\n> #### 1. Install dependencies\n>\n> ```bash\n> npm install --save-dev rollup @rollup/plugin-commonjs @rollup/plugin-node-resolve @rollup/plugin-terser\n> ```\n>\n> #### 2. Example entry file (`assets/javascripts/app.js`)\n>\n> ```js\n> import { initAll } from 'govuk-frontend';\n> import 'hmpo-components/all.js';\n>\n> // ...your custom JS here\n>\n> initAll();\n> ```\n>\n> #### 3. Example Rollup config (`rollup.config.mjs`)\n>\n> ```js\n> import commonjs from '@rollup/plugin-commonjs';\n> import { nodeResolve } from '@rollup/plugin-node-resolve';\n> import terser from '@rollup/plugin-terser';\n>\n> export default {\n>   input: 'assets/javascripts/app.js',\n>   output: {\n>     file: 'public/javascripts/application.js',\n>     format: 'esm',\n>     sourcemap: true,\n>   },\n>   plugins: [\n>     nodeResolve(),\n>     commonjs(),\n>     terser()\n>   ],\n> };\n> ```\n>\n> #### 4. Add a build script to your `package.json`\n>\n> ```json\n> \"scripts\": {\n>   \"build:js\": \"mkdir -p public/javascripts && rollup -c\"\n> }\n> ```\n>\n> Build your bundle with:\n>\n> ```bash\n> npm run build:js\n> ```\n>\n> #### 5. Include the bundle in your HTML\n>\n> ```html\n> <script type=\"module\" src=\"/public/javascripts/application.js\"></script>\n> ```\n>\n> ---\n>\n> If you previously included scripts directly with `<script>`, you will need to update your build pipeline to use ESM and a bundler.\n>\n> _For more options and troubleshooting, see the [Rollup documentation](https://rollupjs.org/) and plugin docs._\n\n\n\n## Usage\n\n### Simple usage\n\n```javascript\nconst { setup } = require('hmpo-app');\nconst { router } = setup();\n\nrouter.use('/', require('./routes/example'));\n\n```\n\n### Extended usage\n\n```javascript\nconst {\n    setup,\n    featureFlag,\n    businessFlag,\n    config,\n    logger,\n    redisClient,\n    linkedFiles\n} = require('hmpo-app');\n\nconst {\n    app,\n    staticRouter,\n    router,\n    errorRouter\n} = setup({\n    option: 'value'\n});\n```\n\nSee [example app](/example/) for more details\n\n## Usage Details\n\n## [`setup(options?)`](/index.js)\n\n- Returned from **`require('hmpo-app')`**.\n- **`setup(options)`** Bootstraps the app. Run this as early on as possible to init the logger before it is used.\n\n### Parameters\n\n- **`options`** (`Object`) - Configuration options for the application:\n  - **`globalMiddlewareSetupFn`** (`Function`, optional) - Configures the global middleware setup process. Defaults to `undefined`.\n  - **`middlewareSetupFn`** (`Function`, optional) - Configures the middleware setup process. Defaults to `undefined`.\n\n### Returns\n\n- **`app`** - the top-level express app.\n- **`staticRouter`** - an express router before session is initialised.\n- **`router`** - an express router after session is initialised.\n- **`errorRouter`** - an express router before the generic error handling used to handle custom errors.\n\n### More info on the `options` Object\n\nAny of these options (except for `config`) can also be specified in a config file. The options passed to `setup()` override the options loaded from config files.\n\n**`config`** - if `false` no config will be loaded.\n\n- **`APP_ROOT`** - Override app root directory detection\n- **`files`** = `'config/default(.json|.yaml|.yml)'` - Array of config files to try to load. Missing files will fail silently.\n- **`envVarName`** = `'HMPO_CONFIG'` - Environment variable to parse to override config values.\n- **`commandLineSwitch`** = `'-c'` - Command line switch to load additional config files.\n- **`merge`** = `true` - Merge new config with config from previous calls to setup.\n\n**`env`** = `NODE_ENV` - Environment variable or `'development'`  environment.\n\n**`port`** = `3000` - Port to bind to. If `false` the app will not listen to a port.\n**`host`** = `'0.0.0.0'` - Host to bind to.\n\n**`logs`** - See [hmpo-logger](https://github.com/HMPO/hmpo-logger/blob/master/lib/manager.js#L24) for options passed to logger. See [hmpo-logger](https://github.com/HMPO/hmpo-logger) for defaults. If `false` no logger is initialised.\n\n**`requestLogging`** = `true` - Enable request logging (excluding public static files).\n\n**`redis`** - If `false` redis is not initialised.\n\n- **`connectionString`** - Connection url used for connecting to a redis instance.\n- **`host`** - Host name for connecting to a redis instance.\n- **`port`** = `6379` - Port for connection to a redis instance.\n- **`...otherOptions`** - Any other options are passed to *`redis`*.\n- If neither `connectionString` or `host` and `port` are specified, an in-memory redis is used.\n\n**`errors`** - If `false` no error handler is set\n\n- **`startUrl`** = `'/'` - Url to redirect to if a deep page is accessed as a new browser. Can be a `function(req, res)`.\n- **`pageNotFoundView`** = `'errors/page-not-found'` - View to render for page not found.\n- **`sessionEndedView`** = `'errors/session-ended'` - View to render if session is not found/expired.\n- **`defaultErrorView`** = `'errors/error'` - View to render for other errors.\n\n**`urls`**\n\n- **`public`** = `'/public'` - Base URL for public static assets.\n- **`publicImages`** = `'/public/images'` - Base URL for public sttic images.\n- **`version`** = `'/version'` - Base URL for version endpoint, or `false` to disable.\n- **`healthcheck`** = `'/healthcheck'` - Base URL for healthcheck endpoint, or `false` to disable.\n\n**`publicDirs`** = `['public']` - Array of paths to mount on the public route, relative to `APP_ROOT`.\n**`publicImagesDirs`** = `['assets/images']` - Array of paths to mount on the public images route, relative to `APP_ROOT`.\n**`publicOptions`** = `{maxAge: 86400000}` - Options passed to the express static middleware.\n\n**`views`** = `'views'` - Array of view directories relative to `APP_ROOT`.\n\n**`nunjucks`** - Options passed to *`nunjucks`* templating contructor, or `false` to disable\n\n- **`dev`** = `env==='development'` - Run *`nunjucks`* in developer mode for more verbose errors.\n- **`noCache`** = `env==='development'` - Don't cache compiled template files.\n- **`watch`** = `env==='development'` - Watch for changes to template files.\n- **`...otherOptions`** - Any other options are passed to *`nunjucks.configure`*\n\n**`locales`** = `'.'` - Array of locales base directories (containing a `'locales'` directory) relative to `APP_ROOT`.\n\n**`translation`** - Options passed to [hmpo-i18n](https://github.com/HMPO/hmpo-i18n) translation library, or `false` to disable.\n\n- **`noCache`** = `env==='development'` - Don't cache templated localisation strings.\n- **`watch`** = `env==='development'` - Watch for changes to localisation files.\n- **`allowedLangs`** = `['en','cy']` - Array of allowed languages.\n- **`fallbackLang`** = `['en']` - Array of languages to use if translation not found is current language.\n- **`cookie`** = `{name: 'lang'}` - Cookie settings to use to store current language.\n- **`query`** = `'lang'` - Query parameter to use to change language, or `false` to disable.\n- **`...otherOptions`** - Any other options are passed to [hmpo-i18n](https://github.com/HMPO/hmpo-i18n).\n\n**`modelOptions`** - Configuration for model options helper to be used with [hmpo-model](https://github.com/HMPO/hmpo-model).\n\n- **`sessionIDHeader`** = `'X-SESSION-ID'` - Session ID request header to pass through to models.\n- **`scenarioIDHeader`** = `'X-SCENARIO-ID'` - Stub scenario ID request header to pass through to models.\n\n**`helmet`** - Configuration for [Helmet](https://helmetjs.github.io/), or `false` to only use frameguard and disable `x-powered-by`.\n**`disableCompression`** = `false` - disable compression middleware.\n\n**`cookies`** - Configuration for cookie parsing middleware.\n\n## [`featureFlag`](/middleware/feature-flag.js)\n\nMiddleware returned from `require('hmpo-app')`.\n\n**`getFlags(req)`** - Return all session and config feature flags.\n\n**`isEnabled(flag, req)`** - Check if a feature flag is enabled in session or config.\n\n**`isDisabled(flag, req)`** - Check if a feature flag is disabled in session or config.\n\n**`redirectIfEnabled(flag, url)`** - Middleware to redirect if a flag is enabled.\n\n**`redirectIfDisabled(flag, url)`** - Middleware to redirect if a flag is disabled.\n\n**`routeIf(flag, handlerIf, handlerElse)`** - Middleware to run different handler depending on status of a feature flag.\n\n### Example Usage\n\n```javascript\nconst { featureFlag } = require('hmpo-app');\n\nconst enabledMiddleware = (req, res, next) => res.send('flag enabled');\nconst disabledMiddleware = (req, res, next) => res.send('flag disabled');\n\nrouter.use(featureFlag.routeIf('flagname', enabledMiddleware, disabledMiddleware));\n```\n\n## [`businessFlag`](/middleware/business-flag.js)\n\nMiddleware returned from `require('hmpo-app')`.\n\n**`getFlags(req)`** - Return all session and config business flags.\n\n**`isEnabled(flag, req)`** - Check if a business flag is enabled in session or config.\n\n**`isDisabled(flag, req)`** - Check if a business flag is disabled in session or config.\n\n**`redirectIfEnabled(flag, url)`** - Middleware to redirect if a flag is enabled.\n\n**`redirectIfDisabled(flag, url)`** - Middleware to redirect if a flag is disabled.\n\n**`routeIf(flag, handlerIf, handlerElse)`** - Middleware to run different handler depending on status of a feature flag.\n\n### Example Usage\n\n```javascript\nconst { business } = require('hmpo-app');\n\nconst enabledMiddleware = (req, res, next) => res.send('flag enabled');\nconst disabledMiddleware = (req, res, next) => res.send('flag disabled');\n\nrouter.use(business.routeIf('flagname', enabledMiddleware, disabledMiddleware));\n```\n\n#### Feature Flag & Business Flag Semantic Differences:\n\n- Feature Flags are typically used for technical or deployment toggles, like enabling a new logging format or switching between frontend flows. Feature Flags are meant to be temporary.\n\n- Business Flags are used for controling policy-driven or operational logic, service variation, or business rule change. Business Flags are meant to be semi-permenant, until the business says otherwise.\n\n## [`config`](/lib/config.js)\n\nA config helper returned from `require('hmpo-app')`.\n\n### Returns\n\n**`defaultFiles`** - An array of default config files: `[\n    'config/default.json',\n    'config/default.yaml',\n    'config/default.yml'\n];`\n\n**`setup(configOptions?)`** - A function for config setup that takes an options Object containing possible params:\n\n- `{\n    APP_ROOT,\n    seed,\n    files = defaultFiles,\n    envVarName = 'HMPO_CONFIG',\n    commandLineSwitch = '-c',\n    merge = true,\n    _commandLineArgs = process.argv,\n    _environmentVariables = process.env\n}`\n- Defaults to empty Object if no options provided.\n\n**`get(path, defaultIfUndefined)` / `config(path, defaultIfUndefined)`** - Get a value from loaded config by dot separated path, or a default if not found or undefined. If any part of the path is not found, the default will be returned.\n\n### Example Usage\n\n```javascript\nconst { config } = require('hmpo-app');\n\nlet defaultFiles = config.defaultFiles;\n\n// Setup config\nif (options.config !== false) config.setup(options.config);\n\nconst value = config.get('config.path.string', 'default value');\n```\n\nDue to the way [config.js](/lib/config.js) uses `Object.assign()`, you can use `config(path, defaultIfUndefined)` and `config.get(path, defaultIfUndefined)` interchangeably - depending on which you find better for readability.\n\nE.g.\n\n```javascript\nconst value = config('config.path.string', 'default value');\n\n// OR\n\nconst value = config.get('config.path.string', 'default value');\n```\n\n## [`logger`](/lib/logger.js)\n\n### Returns\n\n**`setup(options?)`** - Setup the logger by passing an options `Object`. If no options are supplied it will default to checking `config.get('logs', {})`. This passes the provided options directly to `hmpoLogger.config()`.\n\n**`get(name?, level?)` / `logger(name?, level?)`** - Get a new logger with an optional name (defaults to `:hmpo-app`) and an optional level (defaults to `1`).\n\n### Example Usage\n\n```javascript\nconst { logger } = require('hmpo-app');\n\nlogger.setup(); // Setup from config.\n\n// or\n\nlogger.setup({ foo: 'bar' });   // Setup from options\n\nconst log = logger(':name');\n\nlog.info('log message', { req, err, other: 'metedata' });\n\n// or\n\nlogger().info('log message', { req, err, other: 'metedata' });\n```\n\nDue to the way [logger.js](/lib/logger.js) uses `Object.assign()`, you can use `logger(name)` and `logger.get(name)` interchangeably - depending on which you find better for readability.\n\nE.g.\n\n```javascript\nconst myLogger1 = logger('logger1');\n\n// OR\n\nconst myLogger2 = logger.get('logger2');\n```\n\n## [`redisClient`](/lib/redis-client.js)\n\n### Returns\n\n**`redisClient()` / `getClient()`** - Returns a redis client.\n\n**`client`** - The redisClient, defaults to `null`.\n\n**`setup(options?)`** - Returns a modified `redisClient.client`.\n\n- Closes an existing client using provided `close()` and creates a new one using the provided options.\n- All options are passed to `redis.createClient()`. See [Node Redis Docs](https://redis.io/docs/latest/develop/clients/nodejs/) for more info.\n- If no `options` specified, this will default to checking `config.get('redis', {})`.\n- `options` assumes the following parameters: `{ connectionString, host, port = 6379, ...redisOptions }`\n\n**`close(callback)`** - Quits a redisClient if it exists / is connected, then sets `redisClient.client = null`. Finally, fires the provided callback function.\n\nDue to the way [redis-client.js](/lib/redis-client.js) uses `Object.assign()`, you can use `redisClient()` and `redisClient.getClient()` interchangeably - depending on which you find better for readability.\n\n### Example Usage\n\n```javascript\nconst { redisClient } = require('hmpo-app');\n\n// Setup the Redis client\nredisClient.setup({\n    connectionString: 'redis://localhost:6379',\n    // OR\n    host: 'localhost',\n    port: 6379,\n    // Optional: any other redis.createClient options\n    socket: {\n        reconnectStrategy: retries => Math.min(retries * 50, 2000)\n    }\n});\n\n// Get the Redis client instance\nconst client = redisClient(); // same as redisClient.getClient()\n\nclient.set('foo', 'bar');\nclient.get('foo').then(console.log); // Outputs: bar\n\n// Gracefully close the client when shutting down\nredisClient.close(() => {\n    console.log('Redis connection closed');\n});\n```\n\n## Further Examples\n\n- The [example app](/example/).\n- The [hmpo-logger](https://github.com/HMPO/hmpo-logger/blob/5c69e2df6e7c8db6f4642efae5d7fb283e0c7aad/README.md?plain=1#L20) library.\n- The [hmpo-components](https://github.com/HMPO/hmpo-components/blob/3f7c5c97be49c4067877f6d2056b6369909bef17/README.md?plain=1#L24) library.\n","readmeFilename":"README.md"}