{"_id":"@financial-times/express-web-service","_rev":"49-07b52dfe51d195db2cd4868bf91f1701","name":"@financial-times/express-web-service","dist-tags":{"latest":"5.0.0"},"versions":{"3.3.1":{"name":"@financial-times/express-web-service","version":"3.3.1","license":"MIT","_id":"@financial-times/express-web-service@3.3.1","maintainers":[{"name":"financial-times","email":"strategic.products@ft.com"}],"homepage":"https://github.com/Financial-Times/express-web-service","bugs":{"url":"https://github.com/Financial-Times/express-web-service/issues"},"dist":{"shasum":"fbb393f344b67da1c5b7066a5eac1589785a838a","tarball":"https://registry.npmjs.org/@financial-times/express-web-service/-/express-web-service-3.3.1.tgz","integrity":"sha512-3/YxMKchvourdFfKE2OTOsE0YGvSuEyqr7lNWBDxSaZMZ2GKhgtGFbJs3bB5uYqPibdobZgjwRQVIPeZ7jLI9w==","signatures":[{"sig":"MEQCICRIyG5A62O/QXP6/TziyZSTIDX5Gu5tzqcjayoSmWRCAiBjvZZaxluhxoDhEYRrMJQdUSgDoCgPSQbQvHGDkvfmMQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./lib/express-web-service.js","_from":".","_shasum":"fbb393f344b67da1c5b7066a5eac1589785a838a","engines":{"npm":"^4","node":"^6"},"scripts":{"test":"make verify test"},"_npmUser":{"name":"financial-times","email":"strategic.products@ft.com"},"repository":{"url":"git+https://github.com/Financial-Times/express-web-service.git","type":"git"},"_npmVersion":"3.10.10","description":"Create Express middleware to serve /__gtg, /__health, /__about, and /__error endpoints.","directories":{},"_nodeVersion":"6.9.4","dependencies":{"lodash":"^4.17.4"},"devDependencies":{"nyc":"^10.0.0","mocha":"^3.0.2","sinon":"^1.17.6","eslint":"^2.13.1","express":"^4.14.0","mockery":"^1.7.0","proclaim":"^3.4.4","supertest":"^2.0.0","npm-prepublish":"^1.2.2","sinon-as-promised":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/express-web-service-3.3.1.tgz_1484147965582_0.3448920678347349","host":"packages-12-west.internal.npmjs.com"}},"3.4.0":{"name":"@financial-times/express-web-service","version":"3.4.0","license":"MIT","_id":"@financial-times/express-web-service@3.4.0","maintainers":[{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"},{"name":"jakedchampion","email":"me@jakechampion.name"},{"name":"mattandrews","email":"matt@mattandre.ws"},{"name":"rowanmanning","email":"accounts@rowanmanning.co.uk"},{"name":"quarterto","email":"mwr.brennan@gmail.com"},{"name":"the-ft","email":"strategic.products@ft.com"}],"homepage":"https://github.com/Financial-Times/express-web-service","bugs":{"url":"https://github.com/Financial-Times/express-web-service/issues"},"dist":{"shasum":"9f2fea1fecc61288257cac1f0614bf0ad2520bf9","tarball":"https://registry.npmjs.org/@financial-times/express-web-service/-/express-web-service-3.4.0.tgz","integrity":"sha512-FJpOZUXwYJVr/1+4pv2zvmBU1OC60Mot/lQiLPeiK/JdVT6DovJxkAfv7eH3eNpLQ9B9bJwwpu++bH/icN8gUw==","signatures":[{"sig":"MEUCIQC0uKhGxltp8CHsOCP1VyWyTcSP5yXkLLWWhXXGGiXZkAIgFT+xTLLytWYcFqh1GnK0LZeoVjc0bPsBK2PhDNhret0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./lib/express-web-service.js","_from":".","_shasum":"9f2fea1fecc61288257cac1f0614bf0ad2520bf9","engines":{"npm":">=4","node":">=6"},"gitHead":"08c43807118dbe62d54fa7b4bf1c46ac08d5088d","scripts":{"test":"make verify test"},"_npmUser":{"name":"the-ft","email":"strategic.products@ft.com"},"repository":{"url":"git+https://github.com/Financial-Times/express-web-service.git","type":"git"},"_npmVersion":"3.10.10","description":"Create Express middleware to serve /__gtg, /__health, /__about, and /__error endpoints.","directories":{},"_nodeVersion":"6.12.0","dependencies":{"lodash":"^4.17.4"},"devDependencies":{"nyc":"^10.0.0","mocha":"^3.0.2","sinon":"^1.17.6","eslint":"^2.13.1","express":"^4.14.0","mockery":"^1.7.0","restify":"^6.3.2","proclaim":"^3.4.4","supertest":"^2.0.0","npm-prepublish":"^1.2.2","sinon-as-promised":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/express-web-service-3.4.0.tgz_1510584890975_0.7563471221365035","host":"s3://npm-registry-packages"}},"3.4.1":{"name":"@financial-times/express-web-service","version":"3.4.1","license":"MIT","_id":"@financial-times/express-web-service@3.4.1","maintainers":[{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"},{"name":"jakedchampion","email":"me@jakechampion.name"},{"name":"mattandrews","email":"matt@mattandre.ws"},{"name":"rowanmanning","email":"accounts@rowanmanning.co.uk"},{"name":"quarterto","email":"mwr.brennan@gmail.com"},{"name":"the-ft","email":"strategic.products@ft.com"}],"homepage":"https://github.com/Financial-Times/express-web-service","bugs":{"url":"https://github.com/Financial-Times/express-web-service/issues"},"dist":{"shasum":"b3dad0c6f0122d04487eb8038cf259a518efc739","tarball":"https://registry.npmjs.org/@financial-times/express-web-service/-/express-web-service-3.4.1.tgz","integrity":"sha512-62YJdFzP/PD4boM+6DMV3/8zQI7+464+jBqIAVRFtSQbYcr8TPaGpKe5aaegBujdaJquVJIF2qV8T2U5lscC8Q==","signatures":[{"sig":"MEQCIALRfRT1a5VZAya0BCgjAzFqYiv3gEgTJLXnxm2h8jL8AiBJa2e7/9iJ9PibTMdHJVph8WBDSISjGW9jRNWoBJyzwg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./lib/express-web-service.js","_from":".","_shasum":"b3dad0c6f0122d04487eb8038cf259a518efc739","engines":{"npm":">=4","node":">=6"},"gitHead":"bcc432b558a07ccf1b14cc0eb6b26994d438921d","scripts":{"test":"make verify test"},"_npmUser":{"name":"the-ft","email":"strategic.products@ft.com"},"repository":{"url":"git+https://github.com/Financial-Times/express-web-service.git","type":"git"},"_npmVersion":"3.10.10","description":"Create Express middleware to serve /__gtg, /__health, /__about, and /__error endpoints.","directories":{},"_nodeVersion":"6.12.0","dependencies":{"lodash":"^4.17.4"},"devDependencies":{"nyc":"^10.0.0","mocha":"^3.0.2","sinon":"^1.17.6","eslint":"^2.13.1","express":"^4.14.0","mockery":"^1.7.0","restify":"^6.3.2","proclaim":"^3.4.4","supertest":"^2.0.0","npm-prepublish":"^1.2.2","sinon-as-promised":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/express-web-service-3.4.1.tgz_1510670459938_0.9028243084903806","host":"s3://npm-registry-packages"}},"3.4.2":{"name":"@financial-times/express-web-service","version":"3.4.2","license":"MIT","_id":"@financial-times/express-web-service@3.4.2","maintainers":[{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"},{"name":"jakedchampion","email":"me@jakechampion.name"},{"name":"mattandrews","email":"matt@mattandre.ws"},{"name":"rowanmanning","email":"accounts@rowanmanning.co.uk"},{"name":"quarterto","email":"mwr.brennan@gmail.com"},{"name":"the-ft","email":"strategic.products@ft.com"}],"homepage":"https://github.com/Financial-Times/express-web-service","bugs":{"url":"https://github.com/Financial-Times/express-web-service/issues"},"dist":{"shasum":"effc9d2be30c8ee6e299d6a228e4bc4ba0f52a51","tarball":"https://registry.npmjs.org/@financial-times/express-web-service/-/express-web-service-3.4.2.tgz","integrity":"sha512-OnzpCK0dARQjLhcUn7ZmC4GZGyaHajdnKkWjHal6srZzVRHG3skptBa4y4SKkUYQvPkb4TGfaUaCA3seCAdk8Q==","signatures":[{"sig":"MEYCIQCNAcZMZULWA9yvRQmM/NNg2YJvjRqecXinpfs2mT0gAwIhAMEYa+OUfOw5HYA0nfGqnabz74RpR+EwlGbnohnfDRO1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./lib/express-web-service.js","engines":{"npm":">=4","node":">=6"},"gitHead":"eda1c44c62aef3ed3f2ef12c839450c7dea7a4ee","scripts":{"test":"make verify test"},"_npmUser":{"name":"the-ft","email":"strategic.products@ft.com"},"repository":{"url":"git+https://github.com/Financial-Times/express-web-service.git","type":"git"},"_npmVersion":"5.5.1","description":"Create Express middleware to serve /__gtg, /__health, /__about, and /__error endpoints.","directories":{},"_nodeVersion":"6.12.0","dependencies":{"lodash":"^4.17.4","@financial-times/origami-service-makefile":"^6.0.1"},"devDependencies":{"nyc":"^10.0.0","mocha":"^3.0.2","sinon":"^1.17.6","eslint":"^2.13.1","express":"^4.14.0","mockery":"^1.7.0","restify":"^6.3.2","proclaim":"^3.4.4","supertest":"^2.0.0","npm-prepublish":"^1.2.2","sinon-as-promised":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/express-web-service-3.4.2.tgz_1510744752774_0.19302872754633427","host":"s3://npm-registry-packages"}},"3.4.3":{"name":"@financial-times/express-web-service","version":"3.4.3","license":"MIT","_id":"@financial-times/express-web-service@3.4.3","maintainers":[{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"},{"name":"jakedchampion","email":"me@jakechampion.name"},{"name":"mattandrews","email":"matt@mattandre.ws"},{"name":"rowanmanning","email":"accounts@rowanmanning.co.uk"},{"name":"quarterto","email":"mwr.brennan@gmail.com"},{"name":"the-ft","email":"strategic.products@ft.com"}],"homepage":"https://github.com/Financial-Times/express-web-service","bugs":{"url":"https://github.com/Financial-Times/express-web-service/issues"},"dist":{"shasum":"1f9228236ec8ca58aec25e4f74a0357219689e0b","tarball":"https://registry.npmjs.org/@financial-times/express-web-service/-/express-web-service-3.4.3.tgz","integrity":"sha512-2D8t+aIsaA+8CGMXQ0jJ64ls03N7RRD1Vh+Mt0MzspDdJW7y7cynImFPVcE/q89OV1gTz24VzxqwfFAHDg+REw==","signatures":[{"sig":"MEUCIQDAQEKj2MtTe6ICETCr1mQaU7xafN6U/IigIYy55BRM2QIgA6r14O0GRVsLWJxS7/hX4VqN8BTOyz0S6q2SNLJbri0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"./lib/express-web-service.js","engines":{"npm":">=4","node":">=6"},"gitHead":"a99169a0b3ade31dda73dec0ed8c03b3dfa3d25e","scripts":{"test":"make verify test"},"_npmUser":{"name":"the-ft","email":"strategic.products@ft.com"},"repository":{"url":"git+https://github.com/Financial-Times/express-web-service.git","type":"git"},"_npmVersion":"5.5.1","description":"Create Express middleware to serve /__gtg, /__health, /__about, and /__error endpoints.","directories":{},"_nodeVersion":"6.12.0","dependencies":{"lodash":"^4.17.4","@financial-times/origami-service-makefile":"^6.0.1"},"devDependencies":{"nyc":"^10.0.0","mocha":"^3.0.2","sinon":"^1.17.6","eslint":"^2.13.1","express":"^4.14.0","mockery":"^1.7.0","restify":"^6.3.2","proclaim":"^3.4.4","supertest":"^2.0.0","npm-prepublish":"^1.2.2","sinon-as-promised":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/express-web-service-3.4.3.tgz_1512142839684_0.6595755361486226","host":"s3://npm-registry-packages"}},"3.4.4":{"name":"@financial-times/express-web-service","version":"3.4.4","license":"MIT","_id":"@financial-times/express-web-service@3.4.4","maintainers":[{"name":"ft-internal-products","email":"ip.engineering@ft.com"},{"name":"robinmarr-ft","email":"robin.marr@ft.com"},{"name":"joannaskao","email":"joannaskao@gmail.com"},{"name":"callumlocke","email":"callum.locke@gmail.com"},{"name":"bobhaslett","email":"bob.haslett@ft.com"},{"name":"sdbernard","email":"steve.bernard@ft.com"},{"name":"aendrew","email":"aendrew@aendrew.com"},{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"},{"name":"jakedchampion","email":"me@jakechampion.name"},{"name":"mattandrews","email":"matt@mattandre.ws"},{"name":"rowanmanning","email":"accounts@rowanmanning.co.uk"},{"name":"quarterto","email":"mwr.brennan@gmail.com"},{"name":"the-ft","email":"strategic.products@ft.com"}],"homepage":"https://github.com/Financial-Times/express-web-service","bugs":{"url":"https://github.com/Financial-Times/express-web-service/issues"},"dist":{"shasum":"59290fe281205f339ca545b9341727dba45b74cb","tarball":"https://registry.npmjs.org/@financial-times/express-web-service/-/express-web-service-3.4.4.tgz","integrity":"sha512-ARz6eu3/OODyE92avlXXt9kvP960ytWKf0oWDYSgQXJ9ICg5Yi5frrKJFwqsab5EbYEzIMGtoIAyOzcSXkwHhA==","signatures":[{"sig":"MEUCIQCSjCLB604XICoE7JGjEfQr/6luJEPTA/txpuwN6+ny+AIgAh02llKl3o4/iYw3DEQi6UmekRdGkcECmlUzY8ZKrns=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2HB2CRA9TVsSAnZWagAABKIP/A086P8F4mOsje8tuvQn\nQN6J6U4eRx2gitQdXqrfFXuqsehdWp7wrckQK/NHbHBGMDxep32gWlScE9Mq\n3iae3Kshmb4twMRP5dMRUNhQvpmjRLXisfR9PtPAiUdFfBK/YGX7/zo4A1EM\nNNQ/93+EPdfIz9LoAOF/9uCtxAIqV49VnsfdAkTb9bH6abBlI1os61PoPnYQ\nMDaCJSoC3XYINaqlM9LeZEBDu6bwUIIKGxvFFoGdpdPs58ecOBn4zNCc0wog\nugGLKTh8rbZZQhnTaZ8Ezp6uhTWM2ATGj4MVgYEIPNLaO4OaLVI3BIJzv6tI\nBaMZNYMtkVgIMS0kXLAYFa98QkDVkWAFLQGfQrN7y3WzvSiOfZgJ2AX9NkTB\nNcluqGVBgflakAONZYojGzGHhwTCzsl56xkF4tuQlvuwQI29NrXiuE+3++RE\nfIqiGPBhUd82Fl99K/KCWGfh47o6ruqr+NzSY401OadaS3D520i6vnBdTTqE\n8/3fhGAYSCKd7vqxwh6icVSjTQVKGAWsS2DJB9EiEv0uF5etuahXpT9R+c6G\nEMvgboHDX5J3XH5B2aELbF/+PF+juvJ6Gpm5Amsi85GfTsKzm+xxqWat98Fu\nwbsORAABmtaRp/kTQd0nOcSUUo28m7iDarOXWCAhDltehk6souKABShgxbo3\n63j4\r\n=AKP5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./lib/express-web-service.js","engines":{"npm":">=4","node":">=6"},"gitHead":"952a39f1f92d0d16cdb2062b6a20955f28f40183","scripts":{"test":"make verify test"},"_npmUser":{"name":"the-ft","email":"strategic.products@ft.com"},"repository":{"url":"git+https://github.com/Financial-Times/express-web-service.git","type":"git"},"_npmVersion":"5.6.0","description":"Create Express middleware to serve /__gtg, /__health, /__about, and /__error endpoints.","directories":{},"_nodeVersion":"6.12.3","dependencies":{"lodash":"^4.17.4","@financial-times/origami-service-makefile":"^6.0.1"},"devDependencies":{"nyc":"^10.0.0","mocha":"^3.0.2","sinon":"^1.17.6","eslint":"^2.13.1","express":"^4.14.0","mockery":"^1.7.0","restify":"^6.3.2","proclaim":"^3.4.4","supertest":"^2.0.0","npm-prepublish":"^1.2.2","sinon-as-promised":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/express-web-service-3.4.4.tgz_1515515303194_0.032903795363381505","host":"s3://npm-registry-packages"}},"4.0.0":{"name":"@financial-times/express-web-service","version":"4.0.0","license":"MIT","_id":"@financial-times/express-web-service@4.0.0","maintainers":[{"name":"seraph2000","email":"seraphina.anderson.consultant@ft.com"},{"name":"robgodfrey","email":"rob.godfrey@ft.com"},{"name":"hamza.samih","email":"hamza.samih@ft.com"},{"name":"notlee","email":"lee@leemoody.co.uk"},{"name":"efinlay24","email":"euan.finlay@ft.com"},{"name":"emmalewis","email":"emma.lewis@ft.com"},{"name":"aendra","email":"howdy@aendra.com"},{"name":"the-ft","email":"code.management@ft.com"},{"name":"rowanmanning","email":"accounts@rowanmanning.co.uk"},{"name":"chee","email":"yay@chee.party"},{"name":"alexwilson","email":"a@ax.gy"}],"homepage":"https://github.com/Financial-Times/express-web-service","bugs":{"url":"https://github.com/Financial-Times/express-web-service/issues"},"dist":{"shasum":"e6357956fee651fe8a7da604cb577dd76ad436e3","tarball":"https://registry.npmjs.org/@financial-times/express-web-service/-/express-web-service-4.0.0.tgz","fileCount":28,"integrity":"sha512-ljEqZNzc5DFx9bOr5B76V+mIGVa1XT2X2nwFr2rc3Z+4PPXyANYkYZOdYHcDtGyylxWRrxz1I3nIKrP44b7SsA==","signatures":[{"sig":"MEYCIQDmA/s6ppd/by0OqcBZMNy9p4rs9WZ2AU4+qKqEL4/rmAIhAN+VBuTNRNPa/lbx2nu+7tKae+LJEJTNqcdx1RI7ApgL","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":48370,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjx9vEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmra5A/+Lr3xm5G6qXz9lYgDitrWCXrhTHP1focjbEC63wfl7MieV1n8\r\n2SHAufZq39raASzG5rgQWfEuBmM2RFA0QBXoV9NZ2eGJbTNrP53DQF+d9d1m\r\nHu/s37DyyxTvUiPfffUGgAb5YNrcwQ31v4kW8ujepFmAqx/jMbeU7neJpQ7o\r\nhZFm8cloCzVt3WaqNLrtxgE0LVLvift6DaFWlF0b5ssGwCZyyQS4oVcvnnMU\r\nkilYvi2oGi4SfkF8+/P0FV6Nz7ICjBT/WReJtLoysv5zbBJB0L3DeGVw8XJ9\r\n7ZFqdCiDM4BmYboYZgqS2MFHFHrzW50QPSpOmmOvr8SE6DryQRcDylXlHtMV\r\nBeyx4ymXHwNseHz9vV7aWBsPi0UvKo0rb5Ym/x8V80gvYFB9OJK0OsfxYjUd\r\nflvJJSH3aFNBAQVZW/23t1RvwgLNJ80/Y7gR6OmJXFeAEIT7L9Ma5CI3wH3V\r\nfUkZUrhHNko1DG5Lof8cPSBp6WfVSEcYYWkke5jB5WYow+w8BJtPdko8C2Tq\r\nJcvo3cYc73w2rE0taaEDbCncnRPFPXxU8+HxblqAmApq9Avw7gDUlDbpF2wa\r\n+6cQx48eAvVyNPXYOh4gBovxDfMVqKONbsFpHC733MkLgvSpECJVy/+p3icx\r\n0FfY2SXnKpFdayuTPWuQvrVMMVZOoEdgIB8=\r\n=3rhQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./lib/express-web-service.js","snyk":true,"engines":{"npm":">=4","node":">=6"},"gitHead":"d1793062b1e5d07e966197b9a1ec14b5d8787660","scripts":{"test":"make verify test"},"_npmUser":{"name":"the-ft","email":"code.management@ft.com"},"repository":{"url":"git+https://github.com/Financial-Times/express-web-service.git","type":"git"},"_npmVersion":"6.14.16","description":"Create Express middleware to serve /__gtg, /__health, /__about, and /__error endpoints.","directories":{},"_nodeVersion":"12.22.12","dependencies":{"lodash":"^4.17.21","@financial-times/origami-service-makefile":"^7.0.3"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.1","mocha":"^10.1.0","sinon":"^1.17.6","eslint":"^7.4.0","express":"^4.14.0","mockery":"^2.1.0","restify":"^8.5.1","proclaim":"^3.4.4","supertest":"^6.0.0","npm-prepublish":"^1.2.2","sinon-as-promised":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/express-web-service_4.0.0_1674042307996_0.763657357223225","host":"s3://npm-registry-packages"}},"5.0.0":{"name":"@financial-times/express-web-service","version":"5.0.0","license":"MIT","_id":"@financial-times/express-web-service@5.0.0","maintainers":[{"name":"the-ft","email":"code.management@ft.com"},{"name":"rowanmanning","email":"info+npm@rowanmanning.com"},{"name":"chee","email":"yay@chee.party"},{"name":"alexwilson","email":"a@ax.gy"},{"name":"aendra","email":"howdy@aendra.com"},{"name":"emmalewis","email":"emma.lewis@ft.com"},{"name":"notlee","email":"lee@leemoody.co.uk"},{"name":"seraph2000","email":"seraphina.anderson.consultant@ft.com"},{"name":"hamza.samih","email":"hamza.samih@ft.com"},{"name":"robertboulton","email":"robert.boulton@ft.com"},{"name":"robgodfrey","email":"rob.godfrey@ft.com"}],"homepage":"https://github.com/Financial-Times/express-web-service","bugs":{"url":"https://github.com/Financial-Times/express-web-service/issues"},"dist":{"shasum":"255c8540d1f041f70a7d11a57acb175b32cdfd09","tarball":"https://registry.npmjs.org/@financial-times/express-web-service/-/express-web-service-5.0.0.tgz","fileCount":26,"integrity":"sha512-W+8G8WfqOKy461xFNN3epsOZuv0eTxTHOGMdjgvUjNGW1PNlOSdRBBz/EX5j5IxemRO8AgCZAQhnZUtO4RfXWw==","signatures":[{"sig":"MEYCIQCIESvjwp1sDC81nA2iJgzCJrj5xnw9zeazAzJPRXg3nwIhAO7ldHtryoQU11cMlRv73lxvYIWTEKv3LqLFtr3Wtfmq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47468},"main":"./lib/express-web-service.js","snyk":true,"engines":{"npm":">=10","node":">=20"},"gitHead":"b084a41b4414839baf64cfba18cd07d4480b9c23","scripts":{"test":"make verify test"},"_npmUser":{"name":"the-ft","email":"code.management@ft.com"},"repository":{"url":"git+https://github.com/Financial-Times/express-web-service.git","type":"git"},"_npmVersion":"10.9.2","description":"Create Express middleware to serve /__gtg, /__health, /__about, and /__error endpoints.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"lodash":"^4.17.21","@financial-times/origami-service-makefile":"^7.0.3"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.0.1","mocha":"^10.1.0","sinon":"^1.17.6","eslint":"^7.4.0","express":"^4.14.0","mockery":"^2.1.0","restify":"^11.1.0","proclaim":"^3.4.4","supertest":"^6.0.0","npm-prepublish":"^1.2.2","sinon-as-promised":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/express-web-service_5.0.0_1740670871341_0.010429266269992743","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2017-01-11T15:19:27.570Z","modified":"2026-06-23T16:01:58.882Z","3.3.1":"2017-01-11T15:19:27.570Z","3.4.0":"2017-11-13T14:54:51.983Z","3.4.1":"2017-11-14T14:41:00.958Z","3.4.2":"2017-11-15T11:19:14.478Z","3.4.3":"2017-12-01T15:40:41.058Z","3.4.4":"2018-01-09T16:28:24.702Z","4.0.0":"2023-01-18T11:45:08.160Z","5.0.0":"2025-02-27T15:41:11.517Z"},"bugs":{"url":"https://github.com/Financial-Times/express-web-service/issues"},"license":"MIT","homepage":"https://github.com/Financial-Times/express-web-service","repository":{"url":"git+https://github.com/Financial-Times/express-web-service.git","type":"git"},"description":"Create Express middleware to serve /__gtg, /__health, /__about, and /__error endpoints.","maintainers":[{"email":"code.management@ft.com","name":"the-ft"},{"email":"info+npm@rowanmanning.com","name":"rowanmanning"},{"email":"yay@chee.party","name":"chee"},{"email":"a@ax.gy","name":"alexwilson"},{"email":"howdy@aendra.com","name":"aendra"},{"email":"emma.lewis@ft.com","name":"emmalewis"},{"email":"lee@leemoody.co.uk","name":"notlee"},{"email":"hamza.samih@ft.com","name":"hamza.samih"},{"email":"robert.boulton@ft.com","name":"robertboulton"},{"email":"leila.micollier@ft.com","name":"leila.micollier"},{"email":"rob.godfrey@ft.com","name":"robgodfrey"}],"readme":"# FT Express Web Service\n\nCreate [Express] middleware to serve `/__gtg`, `/__health`, `/__about`, and `/__error` endpoints.\n\n- [Usage](#usage)\n  - [Requirements](#requirements)\n  - [API Documentation](#api-documentation)\n  - [Options](#options)\n  - [Examples](#examples)\n- [Migration](#migration)\n- [Contributing](#contributing)\n- [Contact](#contact)\n- [Licence](#licence)\n\n## Usage\n\n### Requirements\n\nRunning Express Web Service requires [Node.js] 20.x+ and [npm]. You can install with:\n\n```sh\nnpm install @financial-times/express-web-service\n```\n\nYou'll also need to be using [Express] 4+. Express Web Service also supports [Restify] with a few modifications, see [the examples](#examples) for more information.\n\n### API Documentation\n\nFamiliarity with [Express] is assumed in the rest of the API documentation. You'll also need to require the module with:\n\n```js\nconst expressWebService = require(\"@financial-times/express-web-service\")\n```\n\n### `expressWebService( [options] )`\n\nCreate and return a middleware for serving FT webservice endpoints, customisable with an [options object](#options).\n\n```js\nconst app = express()\n\napp.use(\n\texpressWebService({\n\t\t// options\n\t})\n)\n\n// or mount on a sub-path\napp.use(\n\t\"/example\",\n\texpressWebService({\n\t\t// options\n\t})\n)\n```\n\nThe following routes are added:\n\n#### Good to go (`/__gtg`)\n\nConforms to the [FT Good to go standard], emitting a `200 OK` response if the application should be considered healthy, and `503 Service Unavailable` if it should not. This is intended to be used to make routing decisions.\n\nAlways returns `200 OK` unless a `goodToGoTest` option is specified.\n\n#### Health check (`/__health`)\n\nConforms to the [FT Healthcheck standard], returning JSON data summarising the current health status of the application.\n\nAlways returns an `[{ ok:true }]` healthcheck response (ie a valid healthcheck response with a single ok check) unless the `healthCheck` option is specified.\n\n#### About (`/__about`)\n\nConforms to the (at time of writing, draft) [FT About endpoint standard], returning JSON data describing the application, and providing links to all relevant dashboards and support documentation resources.\n\nThe information emitted by the about endpoint is populated from the `about` option. The `_hostname` and `appVersion` fields will be populated automatically if not present in the data passed in through the `about` option.\n\n#### Error (`/__error`)\n\nThis endpoint simply throws a JavaScript error, and makes no attempt to handle it. This is useful for testing the way that your application handles runtime errors in prod, both in terms of reporting them (eg to a logging or aggregation tool) and presenting an appropriate UI to the end user.\n\n### Options\n\nThe available options are as follows:\n\n- `manifestPath`: (Optional) Path to the app's `package.json` file. This will be used to populate the `appVersion` and `dateDeployed` properties of the `/__about` endpoint, if they are not specified explicitly\n- `about`: (Optional) Object containing standard runbook properties as defined in the [ft about endpoint standard], or a Promise that resolves to an object containing these properties\n- `goodToGoTest`: (Optional) A function that can be used to indicate the good to go status of the service, the function should return a Promise resolved with `true` to indicate a positive good to go status, and `false` to indicate a negative good to go status\n- `healthCheck`: (Optional) A function that can be used to generate structured healthcheck information, the function should return a Promise resolved with an array of healthcheck objects\n- `routes`: (Optional) An array of routes to install. Possible values are `health`, `gtg`, `about` and `error`. Defaults to `[\"health\", \"gtg\", \"about\"]`\n\n### Examples\n\nBasic example:\n\n```JS\nconst express = require('express');\nconst expressWebService = require('@financial-times/express-web-service');\n\nconst app = express();\n\napp.use(expressWebService({\n\tmanifestPath: `${__dirname}/package.json`,\n\tabout: {\n\t\t\"schemaVersion\": 1,\n\t\t\"name\": \"build-service\",\n\t\t\"purpose\": \"Front end build process as a service.  Fetches specified Origami components from git, runs Origami build process, and returns the resulting CSS or JS bundle over HTTP.\",\n\t\t\"audience\": \"public\",\n\t\t\"primaryUrl\": \"https://origami-build.ft.com\",\n\t\t\"serviceTier\": \"gold\"\n\t}\n}));\n```\n\nExample with Good To Go logic and Healthcheck logic:\n\n```JS\napp.use(expressWebService({\n\tmanifestPath: `${__dirname}/package.json`,\n\tabout: {\n\t\t\"schemaVersion\": 1,\n\t\t\"name\": \"build-service\",\n\t\t\"purpose\": \"Front end build process as a service.  Fetches specified Origami components from git, runs Origami build process, and returns the resulting CSS or JS bundle over HTTP.\",\n\t\t\"audience\": \"public\",\n\t\t\"primaryUrl\": \"https://origami-build.ft.com\",\n\t\t\"serviceTier\": \"gold\"\n\t},\n\tgoodToGoTest: function() {\n\t\treturn new Promise(function(resolve, reject) {\n\t\t\tresolve(isApplicationHappy());\n\t\t});\n\t},\n\thealthCheck: function() {\n\t\t// You might have several async checks that you need to perform or\n\t\t// collect the results from, this is a really simplistic example\n\t\treturn new Promise(function(resolve, reject) {\n\t\t\tresolve([\n\t\t\t\t{\n\t\t\t\t\tname: \"Database TCP connectivity\",\n\t\t\t\t\tok: false,\n\t\t\t\t\tseverity: 2,\n\t\t\t\t\tbusinessImpact: \"Article pages will not be available\",\n\t\t\t\t\ttechnicalSummary: \"The database is dead\",\n\t\t\t\t\tpanicGuide: \"Check the health status of the database at host <database host>\",\n\t\t\t\t\tcheckOutput: \"tcp connect failed after 10 seconds on destination port 3306 - destination unreachable\",\n\t\t\t\t\tlastUpdated: new Date().toISOString()\n\t\t\t\t}\n\t\t\t]);\n\t\t});\n\t}\n}));\n```\n\nExample of using with [Restify] rather than Express:\n\n```js\nconst expressWebService = require(\"@financial-times/express-web-service\")\nconst restify = require(\"restify\")\n\nconst server = restify.createServer()\n\n// Because Restify doesn't mount middleware for routes that don't exist,\n// we have to explicitly define the required routes\nserver.get(\n\t/^\\/__(about|gtg|health)$/,\n\texpressWebService({\n\t\t// config\n\t})\n)\n```\n\n## Migration\n\nThis migration guide aims to help you migrate between major versions of Express Web Service.\n\n### Migrating from v2.x.x to v3.x.x\n\nThere are some big changes between versions 2 and 3 of this library. Firstly the module has been renamed from `express-ftwebservice` to `@financial-times/express-web-service`.\n\nThe entire API has been updated to use Express middleware:\n\n```js\nconst express = require(\"express\")\nconst expressWebService = require(\"@financial-times/express-web-service\")\nconst app = express()\nconst options = {}\n\n// Old\nexpressWebService(app, options)\n\n// New\napp.use(expressWebService(options))\n```\n\nAlso the `about` option now accepts either an object (matching version 2), or a promise which resolves to an object. This allows you to generate your about information asynchronously:\n\n```js\napp.use(\n\texpressWebService({\n\t\tabout: {\n\t\t\tname: \"My App\",\n\t\t},\n\t})\n)\n// or\napp.use(\n\texpressWebService({\n\t\tabout: new Promise((resolve, reject) => {\n\t\t\t// do something async\n\t\t\tresolve(retrievedAboutInfo)\n\t\t}),\n\t})\n)\n```\n\n## Contributing\n\nThis module has a full suite of unit tests, and is verified with ESLint. You can use the following commands to check your code before opening a pull request.\n\n```sh\nmake verify  # verify JavaScript code with ESLint\nmake test    # run the unit tests and check coverage\n```\n\n## Contact\n\nIf you have any questions or comments about this module, or need help using it, please either [raise an issue][issues], visit [#origami-support] or email [Origami Support].\n\n## Licence\n\nThis software is published by the Financial Times under the [MIT licence][license].\n\n[#origami-support]: https://financialtimes.slack.com/messages/origami-support/\n[express]: http://expressjs.com/\n[ft about endpoint standard]: https://docs.google.com/document/d/1B80a0nAI8L1cuIlSEai4Zuztq7Lef0ytxJYNFCjG7Ko/edit\n[ft good to go standard]: https://docs.google.com/document/d/11paOrAIl9eIOqUEERc9XMaaL3zouJDdkmb-gExYFnw0/edit\n[ft healthcheck standard]: https://docs.google.com/document/d/18hefJjImF5IFp9WvPAm9Iq5_GmWzI9ahlKSzShpQl1s/edit\n[issues]: https://github.com/Financial-Times/express-web-service/issues\n[license]: http://opensource.org/licenses/MIT\n[node.js]: https://nodejs.org/\n[npm]: https://www.npmjs.com/\n[origami support]: mailto:origami-support@ft.com\n[restify]: http://restify.com/\n","readmeFilename":"README.md"}