{"_id":"@financial-times/n-api-factory","_rev":"41-a572ab88e0aef803157534cca8a5290c","name":"@financial-times/n-api-factory","dist-tags":{"latest":"1.2.2"},"versions":{"0.0.1":{"name":"@financial-times/n-api-factory","version":"0.0.1","author":{"name":"Zhenyu Lin","email":"zhenyu.lin@ft.com"},"license":"MIT","_id":"@financial-times/n-api-factory@0.0.1","maintainers":[{"name":"aendrew","email":"aendrew@aendrew.com"},{"name":"bobhaslett","email":"bob.haslett@ft.com"},{"name":"callumlocke","email":"callum.locke@gmail.com"},{"name":"ft-internal-products","email":"ip.engineering@ft.com"},{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"},{"name":"jakedchampion","email":"me@jakechampion.name"},{"name":"joannaskao","email":"joannaskao@gmail.com"},{"name":"mattandrews","email":"matt@mattandre.ws"},{"name":"quarterto","email":"mwr.brennan@gmail.com"},{"name":"robinmarr-ft","email":"robin.marr@ft.com"},{"name":"rowanmanning","email":"accounts@rowanmanning.co.uk"},{"name":"sdbernard","email":"steve.bernard@ft.com"},{"name":"the-ft","email":"strategic.products+npm@ft.com"}],"homepage":"https://github.com/Financial-Times/n-api-factory#readme","bugs":{"url":"https://github.com/Financial-Times/n-api-factory/issues"},"dist":{"shasum":"07d571bae5e8092b25da889536b958ab53fe510f","tarball":"https://registry.npmjs.org/@financial-times/n-api-factory/-/n-api-factory-0.0.1.tgz","fileCount":7,"integrity":"sha512-v7zF77DB/Xls/wcevHZJylES6c12MgkrL3pLSfgekOV99ZQ8V23eJXfvcMtS2YlEQ+irtWk4bJA4xFtsBfK5nA==","signatures":[{"sig":"MEUCIQC3nbz4/xswjqS1XEEJ2wg7N4zRq2tLGmzJX4eUdggp1gIgbkQkAKI6yw9+Gsq3zZOhLFWbkr/K3xqcKNxTMjhjk1c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8102},"main":"dist/index.js","_from":".","_shasum":"07d571bae5e8092b25da889536b958ab53fe510f","engines":{"node":">=6.1.0"},"gitHead":"9e946bd0a4a9162f24b7b479924c2d21b851e101","scripts":{"lint":"eslint src","test":"jest","cover":"jest --coverage","watch":"nodemon --watch src -q --exec 'eslint src --fix'","prepush":"make lint unit-test && make verify -j3","commitmsg":"secret-squirrel-commitmsg","precommit":"secret-squirrel","prepublish":"make build"},"_npmUser":{"name":"the-ft","email":"strategic.products+npm@ft.com"},"repository":{"url":"git+ssh://git@github.com/Financial-Times/n-api-factory.git","type":"git"},"_npmVersion":"3.10.10","description":"","directories":{},"_nodeVersion":"6.13.1","dependencies":{"node-fetch":"^2.0.0","@financial-times/n-error":"^1.0.2","@financial-times/n-utils":"^0.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^22.1.4","nock":"^9.2.3","eslint":"^4.16.0","nodemon":"^1.14.11","prettier":"^1.10.2","babel-cli":"^6.26.0","coveralls":"^3.0.0","fetch-mock":"^6.1.0","babel-eslint":"^8.2.1","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.7.0","eslint-plugin-json":"^1.2.0","eslint-plugin-import":"^2.8.0","eslint-config-prettier":"^2.9.0","eslint-plugin-prettier":"^2.5.0","@financial-times/n-gage":"^1.19.3","eslint-config-airbnb-base":"^12.1.0","babel-plugin-transform-object-rest-spread":"^6.26.0"},"_npmOperationalInternal":{"tmp":"tmp/n-api-factory_0.0.1_1521134362180_0.38492985354774345","host":"s3://npm-registry-packages"}},"0.0.2":{"name":"@financial-times/n-api-factory","version":"0.0.2","author":{"name":"Zhenyu Lin","email":"zhenyu.lin@ft.com"},"license":"MIT","_id":"@financial-times/n-api-factory@0.0.2","maintainers":[{"name":"aendrew","email":"aendrew@aendrew.com"},{"name":"bobhaslett","email":"bob.haslett@ft.com"},{"name":"callumlocke","email":"callum.locke@gmail.com"},{"name":"ft-internal-products","email":"ip.engineering@ft.com"},{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"},{"name":"jakedchampion","email":"me@jakechampion.name"},{"name":"joannaskao","email":"joannaskao@gmail.com"},{"name":"mattandrews","email":"matt@mattandre.ws"},{"name":"quarterto","email":"mwr.brennan@gmail.com"},{"name":"robinmarr-ft","email":"robin.marr@ft.com"},{"name":"rowanmanning","email":"accounts@rowanmanning.co.uk"},{"name":"sdbernard","email":"steve.bernard@ft.com"},{"name":"the-ft","email":"strategic.products+npm@ft.com"}],"homepage":"https://github.com/Financial-Times/n-api-factory#readme","bugs":{"url":"https://github.com/Financial-Times/n-api-factory/issues"},"dist":{"shasum":"fc1e1d29f30c14cb4e216bcef08f06f4443dfb26","tarball":"https://registry.npmjs.org/@financial-times/n-api-factory/-/n-api-factory-0.0.2.tgz","fileCount":7,"integrity":"sha512-8nxxe2jjG/UZs7R7fQMhsePTvWYx8wbmaM/2vaRBu9aDfCkZJxnYQIlo1iRvvYWCFgPN+69Hop8rathizUuUOg==","signatures":[{"sig":"MEUCIQC+YWzTb0jAH+Di5dixjkifU3wvZCFrbHA54qv19e0qRAIgFealt2FdG9/OP/V4lL1Z9qLocjsCGfy1w0A4/u+OdMU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8289},"main":"dist/index.js","_from":".","_shasum":"fc1e1d29f30c14cb4e216bcef08f06f4443dfb26","engines":{"node":">=6.1.0"},"gitHead":"b59d8ccf515289c55a769ba3b3e049a1b914cfef","scripts":{"lint":"eslint src","test":"jest","cover":"jest --coverage","watch":"nodemon --watch src -q --exec 'eslint src --fix'","prepush":"make lint unit-test && make verify -j3","commitmsg":"secret-squirrel-commitmsg","precommit":"secret-squirrel","prepublish":"make build"},"_npmUser":{"name":"the-ft","email":"strategic.products+npm@ft.com"},"repository":{"url":"git+ssh://git@github.com/Financial-Times/n-api-factory.git","type":"git"},"_npmVersion":"3.10.10","description":"","directories":{},"_nodeVersion":"6.13.1","dependencies":{"node-fetch":"^2.0.0","@financial-times/n-error":"^1.0.2","@financial-times/n-utils":"^0.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^22.1.4","nock":"^9.2.3","eslint":"^4.16.0","nodemon":"^1.14.11","prettier":"^1.10.2","babel-cli":"^6.26.0","coveralls":"^3.0.0","fetch-mock":"^6.1.0","babel-eslint":"^8.2.1","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.7.0","eslint-plugin-json":"^1.2.0","eslint-plugin-import":"^2.8.0","eslint-config-prettier":"^2.9.0","eslint-plugin-prettier":"^2.5.0","@financial-times/n-gage":"^1.19.3","eslint-config-airbnb-base":"^12.1.0","babel-plugin-transform-object-rest-spread":"^6.26.0"},"_npmOperationalInternal":{"tmp":"tmp/n-api-factory_0.0.2_1521202470010_0.279640818357314","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@financial-times/n-api-factory","version":"1.0.1","author":{"name":"Zhenyu Lin","email":"zhenyu.lin@ft.com"},"license":"MIT","_id":"@financial-times/n-api-factory@1.0.1","maintainers":[{"name":"aendrew","email":"aendrew@aendrew.com"},{"name":"bobhaslett","email":"bob.haslett@ft.com"},{"name":"callumlocke","email":"callum.locke@gmail.com"},{"name":"ft-internal-products","email":"ip.engineering@ft.com"},{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"},{"name":"jakedchampion","email":"me@jakechampion.name"},{"name":"joannaskao","email":"joannaskao@gmail.com"},{"name":"mattandrews","email":"matt@mattandre.ws"},{"name":"quarterto","email":"mwr.brennan@gmail.com"},{"name":"robinmarr-ft","email":"robin.marr@ft.com"},{"name":"rowanmanning","email":"accounts@rowanmanning.co.uk"},{"name":"sdbernard","email":"steve.bernard@ft.com"},{"name":"the-ft","email":"strategic.products+npm@ft.com"}],"homepage":"https://github.com/Financial-Times/n-api-factory#readme","bugs":{"url":"https://github.com/Financial-Times/n-api-factory/issues"},"dist":{"shasum":"de45a29df85041d2ca34f89353e8e98de927e4c0","tarball":"https://registry.npmjs.org/@financial-times/n-api-factory/-/n-api-factory-1.0.1.tgz","fileCount":7,"integrity":"sha512-T5FxesJ7gy5fXsOcNi/EOTDGQk5DFuuOaPJtgWgeoIg5k4WqB4EJRyXUwzWMFa3wjexXpax6fsXr2OeGp5B+NQ==","signatures":[{"sig":"MEYCIQDktfao1u+1kxB6aTirAbtEFrQs/nsu/eqJzluGkwm8wgIhANAmwFP1nmlluMXq5LWwTh1d/co1lKxikPLjBKGfG8Iv","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8475},"main":"dist/index.js","_from":".","_shasum":"de45a29df85041d2ca34f89353e8e98de927e4c0","engines":{"node":">=6.1.0"},"gitHead":"9aa4ee497c7b0bbdac9f3343e33a86dfcdc82191","scripts":{"lint":"eslint src","test":"jest","cover":"jest --coverage","watch":"nodemon --watch src -q --exec 'eslint src --fix'","prepush":"make lint unit-test && make verify -j3","commitmsg":"secret-squirrel-commitmsg","precommit":"secret-squirrel","prepublish":"make build"},"_npmUser":{"name":"the-ft","email":"strategic.products+npm@ft.com"},"repository":{"url":"git+ssh://git@github.com/Financial-Times/n-api-factory.git","type":"git"},"_npmVersion":"3.10.10","description":"","directories":{},"_nodeVersion":"6.13.1","dependencies":{"node-fetch":"^2.0.0","@financial-times/n-error":"^1.0.2","@financial-times/n-utils":"^0.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^22.1.4","nock":"^9.2.3","eslint":"^4.16.0","nodemon":"^1.14.11","prettier":"^1.10.2","babel-cli":"^6.26.0","coveralls":"^3.0.0","fetch-mock":"^6.1.0","babel-eslint":"^8.2.1","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.7.0","eslint-plugin-json":"^1.2.0","eslint-plugin-import":"^2.8.0","eslint-config-prettier":"^2.9.0","eslint-plugin-prettier":"^2.5.0","@financial-times/n-gage":"^1.19.3","eslint-config-airbnb-base":"^12.1.0","babel-plugin-transform-object-rest-spread":"^6.26.0"},"_npmOperationalInternal":{"tmp":"tmp/n-api-factory_1.0.1_1521208141345_0.11216583110160672","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"@financial-times/n-api-factory","version":"1.0.2","author":{"name":"Zhenyu Lin","email":"zhenyu.lin@ft.com"},"license":"MIT","_id":"@financial-times/n-api-factory@1.0.2","maintainers":[{"name":"aendrew","email":"aendrew@aendrew.com"},{"name":"bobhaslett","email":"bob.haslett@ft.com"},{"name":"callumlocke","email":"callum.locke@gmail.com"},{"name":"ft-internal-products","email":"ip.engineering@ft.com"},{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"},{"name":"jakedchampion","email":"me@jakechampion.name"},{"name":"joannaskao","email":"joannaskao@gmail.com"},{"name":"mattandrews","email":"matt@mattandre.ws"},{"name":"quarterto","email":"mwr.brennan@gmail.com"},{"name":"robinmarr-ft","email":"robin.marr@ft.com"},{"name":"rowanmanning","email":"accounts@rowanmanning.co.uk"},{"name":"sdbernard","email":"steve.bernard@ft.com"},{"name":"the-ft","email":"strategic.products+npm@ft.com"}],"homepage":"https://github.com/Financial-Times/n-api-factory#readme","bugs":{"url":"https://github.com/Financial-Times/n-api-factory/issues"},"dist":{"shasum":"f817dbb5c9c93185fdbea84b929c747e8a0690a9","tarball":"https://registry.npmjs.org/@financial-times/n-api-factory/-/n-api-factory-1.0.2.tgz","fileCount":7,"integrity":"sha512-XJ4qwZcef3OuKKpeeimBqULXaFe7WJ0TD60wr9W6kiYoa9VT0l1j8RAMtIZnifG6ay55iCwa1fM7v8NxEJhG9w==","signatures":[{"sig":"MEUCIQDguXEZZleYUfgWnKi+siB0oJjUOU+RoDGwyCjX8SM8tQIgbHZ+PtFanK3/Fm3Ymq5jVy16A2upMv2rt4MOWrpjhbs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8538},"main":"dist/index.js","_from":".","_shasum":"f817dbb5c9c93185fdbea84b929c747e8a0690a9","engines":{"node":">=6.1.0"},"gitHead":"8abc5e3e9ec710cd5abdd915a02f78c38f80351d","scripts":{"lint":"eslint src","test":"jest","cover":"jest --coverage","watch":"nodemon --watch src -q --exec 'eslint src --fix'","prepush":"make lint unit-test && make verify -j3","commitmsg":"secret-squirrel-commitmsg","precommit":"secret-squirrel","prepublish":"make build"},"_npmUser":{"name":"the-ft","email":"strategic.products+npm@ft.com"},"repository":{"url":"git+ssh://git@github.com/Financial-Times/n-api-factory.git","type":"git"},"_npmVersion":"3.10.10","description":"","directories":{},"_nodeVersion":"6.13.1","dependencies":{"node-fetch":"^2.0.0","@financial-times/n-error":"^1.0.2","@financial-times/n-utils":"^0.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^22.1.4","nock":"^9.2.3","eslint":"^4.16.0","nodemon":"^1.14.11","prettier":"^1.10.2","babel-cli":"^6.26.0","coveralls":"^3.0.0","fetch-mock":"^6.1.0","babel-eslint":"^8.2.1","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.7.0","eslint-plugin-json":"^1.2.0","eslint-plugin-import":"^2.8.0","eslint-config-prettier":"^2.9.0","eslint-plugin-prettier":"^2.5.0","@financial-times/n-gage":"^1.19.3","eslint-config-airbnb-base":"^12.1.0","babel-plugin-transform-object-rest-spread":"^6.26.0"},"_npmOperationalInternal":{"tmp":"tmp/n-api-factory_1.0.2_1521208379895_0.9264332789849623","host":"s3://npm-registry-packages"}},"1.0.3":{"name":"@financial-times/n-api-factory","version":"1.0.3","author":{"name":"Zhenyu Lin","email":"zhenyu.lin@ft.com"},"license":"MIT","_id":"@financial-times/n-api-factory@1.0.3","maintainers":[{"name":"aendrew","email":"aendrew@aendrew.com"},{"name":"bobhaslett","email":"bob.haslett@ft.com"},{"name":"callumlocke","email":"callum.locke@gmail.com"},{"name":"ft-internal-products","email":"ip.engineering@ft.com"},{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"},{"name":"jakedchampion","email":"me@jakechampion.name"},{"name":"joannaskao","email":"joannaskao@gmail.com"},{"name":"mattandrews","email":"matt@mattandre.ws"},{"name":"quarterto","email":"mwr.brennan@gmail.com"},{"name":"robinmarr-ft","email":"robin.marr@ft.com"},{"name":"rowanmanning","email":"accounts@rowanmanning.co.uk"},{"name":"sdbernard","email":"steve.bernard@ft.com"},{"name":"the-ft","email":"strategic.products+npm@ft.com"}],"homepage":"https://github.com/Financial-Times/n-api-factory#readme","bugs":{"url":"https://github.com/Financial-Times/n-api-factory/issues"},"dist":{"shasum":"96b90a20a93799c23a81b6677abacd2ffa1175aa","tarball":"https://registry.npmjs.org/@financial-times/n-api-factory/-/n-api-factory-1.0.3.tgz","fileCount":7,"integrity":"sha512-71YMsh5NDAUUzQFFrsLKphZnNQA6myYHYVjT3ES99Lb5Qn0SVHlTdSQCQsz6NosvVM+KIp3Unq33MazJCwWeAw==","signatures":[{"sig":"MEYCIQC/cZ1F5tZ1txHb/btj+FLMRtfFi86JXSjZniBMrAU6qQIhALxFqyzrXOP/vF3Ucpr8iHRMApmd5SVAjyoTZcsIwWD1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11441},"main":"dist/index.js","_from":".","_shasum":"96b90a20a93799c23a81b6677abacd2ffa1175aa","engines":{"node":">=6.1.0"},"gitHead":"bd3598968cdf53876e1f04d3f5c526ef4af48a4a","scripts":{"lint":"eslint src","test":"jest","cover":"jest --coverage","watch":"nodemon --watch src -q --exec 'eslint src --fix'","prepush":"make lint unit-test && make verify -j3","commitmsg":"secret-squirrel-commitmsg","precommit":"secret-squirrel","prepublish":"make build"},"_npmUser":{"name":"the-ft","email":"strategic.products+npm@ft.com"},"repository":{"url":"git+ssh://git@github.com/Financial-Times/n-api-factory.git","type":"git"},"_npmVersion":"3.10.10","description":"api service creator using `n-fetch` pattern, throws `n-error`, friendly to `n-auto-logger`, `n-auto-metrics`","directories":{},"_nodeVersion":"6.14.1","dependencies":{"node-fetch":"^2.0.0","@financial-times/n-error":"^1.0.5","@financial-times/n-utils":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^22.1.4","nock":"^9.2.3","eslint":"^4.16.0","nodemon":"^1.14.11","prettier":"^1.10.2","babel-cli":"^6.26.0","coveralls":"^3.0.0","fetch-mock":"^6.1.0","babel-eslint":"^8.2.1","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.7.0","eslint-plugin-json":"^1.2.0","eslint-plugin-import":"^2.8.0","eslint-config-prettier":"^2.9.0","eslint-plugin-prettier":"^2.5.0","@financial-times/n-gage":"^1.19.3","eslint-config-airbnb-base":"^12.1.0","babel-plugin-transform-object-rest-spread":"^6.26.0"},"_npmOperationalInternal":{"tmp":"tmp/n-api-factory_1.0.3_1522860167966_0.658706185653773","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@financial-times/n-api-factory","version":"1.1.0","author":{"name":"Zhenyu Lin","email":"zhenyu.lin@ft.com"},"license":"MIT","_id":"@financial-times/n-api-factory@1.1.0","maintainers":[{"name":"aendrew","email":"aendrew@aendrew.com"},{"name":"bobhaslett","email":"bob.haslett@ft.com"},{"name":"callumlocke","email":"callum.locke@gmail.com"},{"name":"ft-internal-products","email":"ip.engineering@ft.com"},{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"},{"name":"jakedchampion","email":"me@jakechampion.name"},{"name":"joannaskao","email":"joannaskao@gmail.com"},{"name":"mattandrews","email":"matt@mattandre.ws"},{"name":"quarterto","email":"mwr.brennan@gmail.com"},{"name":"robinmarr-ft","email":"robin.marr@ft.com"},{"name":"rowanmanning","email":"accounts@rowanmanning.co.uk"},{"name":"sdbernard","email":"steve.bernard@ft.com"},{"name":"the-ft","email":"strategic.products+npm@ft.com"},{"name":"zhenyulin","email":"zhenyu.lyn@gmail.com"}],"homepage":"https://github.com/Financial-Times/n-api-factory#readme","bugs":{"url":"https://github.com/Financial-Times/n-api-factory/issues"},"dist":{"shasum":"e030e720c3768ff2b58ec25185473abfb7e6a30e","tarball":"https://registry.npmjs.org/@financial-times/n-api-factory/-/n-api-factory-1.1.0.tgz","fileCount":7,"integrity":"sha512-BUO9V3lHFLp0Bf9yF2w8XbT4nvXKgzyS98bzAq5VM2H9nwMcmy5czEsWv0BludEkX5O/zbY5XZacH75+UABekw==","signatures":[{"sig":"MEQCIB5Le+8CnemIGjiIOag6xBJS4WX/CQGrR5tVMLj/iADXAiBJJdxPr/90uVF7fgIgJkJYuBt8KQHwbp9bnMz2t5GA2g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":12132,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbAtqBCRA9TVsSAnZWagAACikP/22jpP9E6O9A7k0WOWEX\n4gGvG6hJrKl/dCceWNrAVYvuTzqJok/VjMWN+OuS4Vm5A1UbGLJOusGFfUUH\nqGQtDnM9d6cJPF+rRbGhDQsm8YWm0J7IrfRYQs3+T5WkMDm3r0OdIzxEuL+y\nIctUo/veGwTt6wZfEr1joKQlsxLBNa+69FxVq1i2POOm8ny4KXz3rBnL2rwb\nl3LQcnUUld1TfqghxajKAYg4D/toBYK+dCFMfAaJzqIB9Pa5Z3wXHfMYnfap\n19DJkpLF7Ed1l3rSgSsQ0b2nlpd1PFLEbTlLCj/zWA/V8QykNUs9qop9NOgP\nbEzwR5YDpx3JqJbxOBjuhpxoDdOOcld9LA4ccw3sDjhuUCGNW7xNjcGp0gmK\nm7/dhA4rfoXBDIU2ryZNbz7jsOFQIPEDu8YmCzwsyLzYQL6cxOcFKRGXLnNt\nVE8hsM/6yc9ZIJ2opQx53Hrqb0a/dwkVA7NP3POEaSvmySxnQagRqkbMvQ33\nPssx2MREDuqsnMGyIwouAdsRsdJAT9eg0uE/SCw+4luBfVpDpkNOp92DzuLI\nBRzvKAUwIharBHFjbzMQu1CAdK1vaySsCtouOQzZa+LL/iGpj1r2ewM9nx0W\njB1GC5MXFwIcyIeKlwkiRyh4jdlLdHBSlXX7GOFQmMFEXlURc612Qoasdu0V\nJ4Ik\r\n=UFgo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":".","_shasum":"e030e720c3768ff2b58ec25185473abfb7e6a30e","engines":{"node":">=6.1.0"},"gitHead":"cf4df33652ad4e654d5663ebb4eaecd3bd4ba5a6","scripts":{"lint":"eslint src","test":"jest","cover":"jest --coverage","watch":"nodemon --watch src -q --exec 'eslint src --fix'","prepush":"make lint unit-test && make verify -j3","commitmsg":"secret-squirrel-commitmsg","precommit":"secret-squirrel","prepublish":"make build"},"_npmUser":{"name":"the-ft","email":"strategic.products+npm@ft.com"},"repository":{"url":"git+ssh://git@github.com/Financial-Times/n-api-factory.git","type":"git"},"_npmVersion":"3.10.10","description":"api service creator using `n-fetch` pattern, throws `n-error`, friendly to `n-auto-logger`, `n-auto-metrics`","directories":{},"_nodeVersion":"6.14.2","dependencies":{"node-fetch":"^2.1.2","@financial-times/n-error":"^1.0.5","@financial-times/n-utils":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^22.4.3","nock":"^9.2.5","eslint":"^4.19.1","nodemon":"^1.17.3","prettier":"^1.12.1","babel-cli":"^6.26.0","coveralls":"^3.0.0","fetch-mock":"^6.3.0","babel-eslint":"^8.2.3","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.15.1","eslint-plugin-json":"^1.2.0","eslint-plugin-import":"^2.11.0","eslint-config-prettier":"^2.9.0","eslint-plugin-prettier":"^2.5.0","@financial-times/n-gage":"^2.0.0","eslint-config-airbnb-base":"^12.1.0","babel-plugin-transform-object-rest-spread":"^6.26.0"},"_npmOperationalInternal":{"tmp":"tmp/n-api-factory_1.1.0_1526913664176_0.7582447227225471","host":"s3://npm-registry-packages"}},"1.1.1":{"name":"@financial-times/n-api-factory","version":"1.1.1","author":{"name":"Zhenyu Lin","email":"zhenyu.lin@ft.com"},"license":"MIT","_id":"@financial-times/n-api-factory@1.1.1","maintainers":[{"name":"aendrew","email":"aendrew@aendrew.com"},{"name":"bobhaslett","email":"bob.haslett@ft.com"},{"name":"callumlocke","email":"callum.locke@gmail.com"},{"name":"ft-internal-products","email":"ip.engineering@ft.com"},{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"},{"name":"jakedchampion","email":"me@jakechampion.name"},{"name":"joannaskao","email":"joannaskao@gmail.com"},{"name":"mattandrews","email":"matt@mattandre.ws"},{"name":"quarterto","email":"mwr.brennan@gmail.com"},{"name":"robinmarr-ft","email":"robin.marr@ft.com"},{"name":"rowanmanning","email":"accounts@rowanmanning.co.uk"},{"name":"sdbernard","email":"steve.bernard@ft.com"},{"name":"the-ft","email":"strategic.products+npm@ft.com"},{"name":"zhenyulin","email":"zhenyu.lyn@gmail.com"}],"homepage":"https://github.com/Financial-Times/n-api-factory#readme","bugs":{"url":"https://github.com/Financial-Times/n-api-factory/issues"},"dist":{"shasum":"f303887b185e598acad590567120a53d60fad889","tarball":"https://registry.npmjs.org/@financial-times/n-api-factory/-/n-api-factory-1.1.1.tgz","fileCount":7,"integrity":"sha512-b0KRN0Zkwc5VECcBhUmWClGtc2ZyAIJgXwn9zlhJZH3EJg38WVf7TN0iMFfSMpE+i9AMeyRsYyD3qdzI960kDg==","signatures":[{"sig":"MEQCIB6AlPo7+tIQv8cfgoc/lru/l3muF9TGJnbWEkB8nsWjAiBE2HM//q135vrc75q5FjmancwmTx96XqeoMjNCgzkpoA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11450},"main":"dist/index.js","_from":".","_shasum":"f303887b185e598acad590567120a53d60fad889","engines":{"node":">=6.1.0"},"gitHead":"d339c21363ddae817219fca95d313c5c10dbcbdd","scripts":{"lint":"eslint src","test":"jest","cover":"jest --coverage","watch":"nodemon --watch src -q --exec 'eslint src --fix'","prepush":"make lint unit-test && make verify -j3","commitmsg":"secret-squirrel-commitmsg","precommit":"secret-squirrel","prepublish":"make build"},"_npmUser":{"name":"the-ft","email":"strategic.products+npm@ft.com"},"repository":{"url":"git+ssh://git@github.com/Financial-Times/n-api-factory.git","type":"git"},"_npmVersion":"3.10.10","description":"api service creator using `n-fetch` pattern, throws `n-error`, friendly to `n-auto-logger`, `n-auto-metrics`","directories":{},"_nodeVersion":"6.14.3","dependencies":{"node-fetch":"^2.1.2","@financial-times/n-error":"^1.0.5","@financial-times/n-utils":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^23.2.0","nock":"^9.3.3","eslint":"^4.19.1","nodemon":"^1.17.5","prettier":"^1.13.6","babel-cli":"^6.26.0","coveralls":"^3.0.1","babel-eslint":"^8.2.5","babel-preset-env":"^1.6.1","eslint-plugin-jest":"^21.17.0","eslint-plugin-json":"^1.2.0","eslint-plugin-import":"^2.12.0","eslint-config-prettier":"^2.9.0","eslint-plugin-prettier":"^2.6.1","@financial-times/n-gage":"^2.0.2","eslint-config-airbnb-base":"13.0.0","babel-plugin-transform-object-rest-spread":"^6.26.0"},"_npmOperationalInternal":{"tmp":"tmp/n-api-factory_1.1.1_1532519196795_0.9224055632232462","host":"s3://npm-registry-packages"}},"1.1.2":{"name":"@financial-times/n-api-factory","version":"1.1.2","author":{"name":"Zhenyu Lin","email":"zhenyu.lin@ft.com"},"license":"MIT","_id":"@financial-times/n-api-factory@1.1.2","maintainers":[{"name":"aendrew","email":"aendrew@aendrew.com"},{"name":"bobhaslett","email":"bob.haslett@ft.com"},{"name":"callumlocke","email":"callum.locke@gmail.com"},{"name":"ft-internal-products","email":"ip.engineering@ft.com"},{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"},{"name":"jakedchampion","email":"me@jakechampion.name"},{"name":"joannaskao","email":"joannaskao@gmail.com"},{"name":"mattandrews","email":"matt@mattandre.ws"},{"name":"quarterto","email":"mwr.brennan@gmail.com"},{"name":"robinmarr-ft","email":"robin.marr@ft.com"},{"name":"rowanmanning","email":"accounts@rowanmanning.co.uk"},{"name":"sdbernard","email":"steve.bernard@ft.com"},{"name":"the-ft","email":"strategic.products+npm@ft.com"},{"name":"zhenyulin","email":"zhenyu.lyn@gmail.com"}],"homepage":"https://github.com/Financial-Times/n-api-factory#readme","bugs":{"url":"https://github.com/Financial-Times/n-api-factory/issues"},"dist":{"shasum":"e67e193a1ef4e3a8e7b246f4ca890fa072726ac8","tarball":"https://registry.npmjs.org/@financial-times/n-api-factory/-/n-api-factory-1.1.2.tgz","fileCount":7,"integrity":"sha512-ubhpsfM1HkUv2em4RvpouQTnsj11Osv2eC15Pu181YS6x8AQv3JiO/+lUzhZduqgMbBcQ9+3k1YpvoPuHGb8LA==","signatures":[{"sig":"MEQCIDVwgVvzM5B78wnvnuVGC7Zd9MK2uWgTQuyB9Tde/eBpAiBnHA1pZq2JqBfy2Qa4SbfcmrEZck0U90SbGOuMmrDoqw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11450},"main":"dist/index.js","_from":".","_shasum":"e67e193a1ef4e3a8e7b246f4ca890fa072726ac8","engines":{"node":">=6.1.0"},"gitHead":"8d2c89e3f8b6415119a14b484a30fa58c235766c","scripts":{"lint":"eslint src","test":"jest","cover":"jest --coverage","watch":"nodemon --watch src -q --exec 'eslint src --fix'","prepush":"make lint unit-test && make verify -j3","commitmsg":"secret-squirrel-commitmsg","precommit":"secret-squirrel","prepublish":"make build"},"_npmUser":{"name":"the-ft","email":"strategic.products+npm@ft.com"},"repository":{"url":"git+ssh://git@github.com/Financial-Times/n-api-factory.git","type":"git"},"_npmVersion":"3.10.10","description":"api service creator using `n-fetch` pattern, throws `n-error`, friendly to `n-auto-logger`, `n-auto-metrics`","directories":{},"_nodeVersion":"6.14.3","dependencies":{"node-fetch":"^2.2.0","@financial-times/n-error":"^1.0.6","@financial-times/n-utils":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^23.4.1","nock":"^9.4.3","eslint":"^4.19.1","nodemon":"^1.18.3","prettier":"^1.13.7","babel-cli":"^6.26.0","coveralls":"^3.0.2","babel-eslint":"^8.2.6","babel-preset-env":"^1.7.0","eslint-plugin-jest":"^21.18.0","eslint-plugin-json":"^1.2.0","eslint-plugin-import":"^2.12.0","eslint-config-prettier":"^2.9.0","eslint-plugin-prettier":"^2.6.2","@financial-times/n-gage":"^2.0.2","eslint-config-airbnb-base":"13.0.0","babel-plugin-transform-object-rest-spread":"^6.26.0"},"_npmOperationalInternal":{"tmp":"tmp/n-api-factory_1.1.2_1532532644693_0.6324638673210468","host":"s3://npm-registry-packages"}},"1.2.1":{"name":"@financial-times/n-api-factory","version":"1.2.1","author":{"name":"Zhenyu Lin","email":"zhenyu.lin@ft.com"},"license":"MIT","_id":"@financial-times/n-api-factory@1.2.1","maintainers":[{"name":"aendrew","email":"aendrew@aendrew.com"},{"name":"bobhaslett","email":"bob.haslett@ft.com"},{"name":"callumlocke","email":"callum.locke@gmail.com"},{"name":"ft-internal-products","email":"ip.engineering@ft.com"},{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"},{"name":"jakedchampion","email":"me@jakechampion.name"},{"name":"joannaskao","email":"joannaskao@gmail.com"},{"name":"mattandrews","email":"matt@mattandre.ws"},{"name":"quarterto","email":"mwr.brennan@gmail.com"},{"name":"robinmarr-ft","email":"robin.marr@ft.com"},{"name":"rowanmanning","email":"accounts@rowanmanning.co.uk"},{"name":"sdbernard","email":"steve.bernard@ft.com"},{"name":"the-ft","email":"strategic.products+npm@ft.com"},{"name":"zhenyulin","email":"zhenyu.lyn@gmail.com"}],"homepage":"https://github.com/Financial-Times/n-api-factory#readme","bugs":{"url":"https://github.com/Financial-Times/n-api-factory/issues"},"dist":{"shasum":"00a0591d168bcccd1773e815535d9a5a978bd19d","tarball":"https://registry.npmjs.org/@financial-times/n-api-factory/-/n-api-factory-1.2.1.tgz","fileCount":7,"integrity":"sha512-wJO5Q9hiDajBOSZKyZ9MbuvV6ha15ObT94WCPaByw0b3tqOgZaKWkdKMcxLXRZBsK5fU43QC9lQ1TWsHhMh6Yw==","signatures":[{"sig":"MEUCIQDGtcKjE6FnnegzZnqqjpu+D+PAMEnMmPKtVAx60L0D+AIgXjA/IiC0TyTsx1MoVSxrMfPFDUfv4jmAsUzTwrPagIU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11582,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbbZYECRA9TVsSAnZWagAAtE8QAJ6yVUda/u+pMKLDyjma\nTqmBmAzLBuzy6WEf+YuDjq+UVanI0a2mUflwLC6Nx1ouCcUGquS55KxEY8eY\nsaj/SPG/8GgdxVyUwePcj3uHk1b4Pzpc+I+Io8s8a2KEopJXqgrAYlTA18rE\nyY/kZxawBqhuJwyo8ePXPwigcdMYk4hOMLdqZ2GR8aEezxO2HZGdWkTPm/Rg\n+MUV+fgDcgdj7l7/V2WkxAhEajCYozPC8TmbVvDh3oiW9XhfK/oNvcU6AXqh\nKkdDghvDUut7DduD3Xj1w/tI/WDSsFnZjIGLoILsYXQeN6cP0uthJJYlGTYh\nodrki6mIA+uce32nQwDGRV/I8Wii/Go19L2yCQH42T7weXlyKcjYc8gMwdU2\nwFz6W62I4iXyvS6brTe+LFfpGCL6eZct8KoMnbwhReaeGi+TGDrWRqdhOCjl\nFQbd0LULgTk9DhuCy2br0/iKHXCqQDikK/f+JkulTQ7HFCvOv7gMTmjb3t7l\nsDSFVw0OM9TaJyLMPV2AzOqpQ7p9jMpxvQFYJcpSg8xNWI4qLmoC3KpA2zD1\njL/Rxa/vxTjH+koD3Yr5Y34zbVyFzH+k7U4ZSreslpiY/xwXEOk9Xx2FEi9m\nEih58PNmyFV8fQtgvXevRB4a+ksGenf+1NOgu+aUlkGj901QrisJz3MUOJsw\nSHrJ\r\n=ODzO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":".","_shasum":"00a0591d168bcccd1773e815535d9a5a978bd19d","engines":{"node":">=6.1.0"},"gitHead":"57be8f4e556a559353ac0d67d1cc655118687432","scripts":{"lint":"eslint src","test":"jest","cover":"jest --coverage","watch":"nodemon --watch src -q --exec 'eslint src --fix'","prepush":"make lint unit-test && make verify -j3","commitmsg":"secret-squirrel-commitmsg","precommit":"secret-squirrel","prepublish":"make build"},"_npmUser":{"name":"the-ft","email":"strategic.products+npm@ft.com"},"repository":{"url":"git+ssh://git@github.com/Financial-Times/n-api-factory.git","type":"git"},"_npmVersion":"3.10.10","description":"api service creator using `n-fetch` pattern, throws `n-error`, friendly to `n-auto-logger`, `n-auto-metrics`","directories":{},"_nodeVersion":"6.14.3","dependencies":{"node-fetch":"^2.2.0","@financial-times/n-error":"^1.0.6","@financial-times/n-utils":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^23.4.2","nock":"^9.6.0","eslint":"^4.19.1","nodemon":"^1.18.3","prettier":"^1.14.2","babel-cli":"^6.26.0","coveralls":"^3.0.2","babel-eslint":"^8.2.6","babel-preset-env":"^1.7.0","eslint-plugin-jest":"^21.20.2","eslint-plugin-json":"^1.2.0","eslint-plugin-import":"^2.12.0","eslint-config-prettier":"^2.9.0","eslint-plugin-prettier":"^2.6.2","@financial-times/n-gage":"^2.0.4","eslint-config-airbnb-base":"13.0.0","babel-plugin-transform-object-rest-spread":"^6.26.0"},"_npmOperationalInternal":{"tmp":"tmp/n-api-factory_1.2.1_1533908482995_0.9896188805124881","host":"s3://npm-registry-packages"}},"1.2.2":{"name":"@financial-times/n-api-factory","version":"1.2.2","author":{"name":"Zhenyu Lin","email":"zhenyu.lin@ft.com"},"license":"MIT","_id":"@financial-times/n-api-factory@1.2.2","maintainers":[{"name":"aendrew","email":"aendrew@aendrew.com"},{"name":"bobhaslett","email":"bob.haslett@ft.com"},{"name":"callumlocke","email":"callum.locke@gmail.com"},{"name":"ft-internal-products","email":"ip.engineering@ft.com"},{"name":"i-like-robots","email":"matt+npm@maketea.co.uk"},{"name":"jakedchampion","email":"me@jakechampion.name"},{"name":"joannaskao","email":"joannaskao@gmail.com"},{"name":"mattandrews","email":"matt@mattandre.ws"},{"name":"quarterto","email":"mwr.brennan@gmail.com"},{"name":"robinmarr-ft","email":"robin.marr@ft.com"},{"name":"rowanmanning","email":"accounts@rowanmanning.co.uk"},{"name":"sdbernard","email":"steve.bernard@ft.com"},{"name":"the-ft","email":"strategic.products+npm@ft.com"},{"name":"zhenyulin","email":"zhenyu.lyn@gmail.com"}],"homepage":"https://github.com/Financial-Times/n-api-factory#readme","bugs":{"url":"https://github.com/Financial-Times/n-api-factory/issues"},"dist":{"shasum":"5da5b5c2bee8b234f32996e4edc0624897249b4a","tarball":"https://registry.npmjs.org/@financial-times/n-api-factory/-/n-api-factory-1.2.2.tgz","fileCount":7,"integrity":"sha512-eIBXhe4vJGDYWwg3oXdB1Tf9T1UjVJ0RxxxKhnj62O92s3zQnRs1laJVbhBdKU6oVGgfIVqFk3VjQxfHh8vWWQ==","signatures":[{"sig":"MEUCIAdUemSFrQg2faY3id+glK+AgWmIdqeJCnmkcjsnJwo0AiEAuBD8YWlBT4lNxnNNVtqljNOlsJ7Pjolm/rlOwvOzdbk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbcwEcCRA9TVsSAnZWagAA9nQP/28w821ia8otgj6moQmO\nMh0UwkwK4SMoyj2AJ5K2W7eAiDxwpLquq50rvEHhnzEcnRBLj2J4nrH9d4D6\nxAeuzh6maGRKo1YD3ZPDQ0QCmn05vrB6E8B8gWi6QlZSvbRR4DTbN8gBCl5m\n5PZgmE1onk4rrnSKuqldXkJLgm4zsr7+lHgjZuGGcnk4NUn4Ip7Ni9dsKDo8\nqz+1ktjjglDZr81IRM/jYAupnLM6zAnCwJtIEDX39gZbTE7OBX/xQ0+ZfEEC\nJkMGv/CbxguttdjRCSk/44F/R4LWaRcEkKNtywP0mquZveYQ6rIPdN2k7Kze\nhAAb3IVCu9RYpwRFneonFT1Qj7CO+Vi29cMjJbFXQ09Y/m9mIJI0iJxCorOj\nl3/H0wlYxuVTChEj5Ds+JimBvG2TwsNb+4TWz/qb66P6+D438ePTHbmV1m36\nu2VW9SdMKSgJ2Ud/n40P1xrD/7aaTlRFOZ+gI67uvmfjRzrWWSPp9KJ3MNFb\nAhVCw5TU9tSwnNnjoMnGIQ6LJldsh32Utl062z3ZySRFpW+bObiR9ctyPsWj\n8n3LFmA6jUyz9FE4NMT+2+Kly35q63rF7LIE3z+heb99Rvb5d5Lp9UoLIvgf\nXY6pQ+ZWGFk6PDtxsBQL2tns7Uylvuvgcs8iaTE05NE0r38BFaJ9QaBxXDaT\nOicE\r\n=9MX+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":".","_shasum":"5da5b5c2bee8b234f32996e4edc0624897249b4a","engines":{"node":">=6.1.0"},"gitHead":"b9144260bffa9d37f67ceeb69f9d4ade086cc5cf","scripts":{"lint":"eslint src","test":"jest","cover":"jest --coverage","watch":"nodemon --watch src -q --exec 'eslint src --fix'","prepush":"make lint unit-test && make verify -j3","commitmsg":"secret-squirrel-commitmsg","precommit":"secret-squirrel","prepublish":"make build"},"_npmUser":{"name":"the-ft","email":"strategic.products+npm@ft.com"},"repository":{"url":"git+ssh://git@github.com/Financial-Times/n-api-factory.git","type":"git"},"_npmVersion":"3.10.10","description":"api service creator using `n-fetch` pattern, throws `n-error`, friendly to `n-auto-logger`, `n-auto-metrics`","directories":{},"_nodeVersion":"6.14.3","dependencies":{"node-fetch":"^2.2.0","@financial-times/n-error":"^1.1.0","@financial-times/n-utils":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^23.5.0","nock":"^9.6.0","eslint":"^5.3.0","nodemon":"^1.18.3","prettier":"^1.14.2","babel-cli":"^6.26.0","coveralls":"^3.0.2","babel-eslint":"^8.2.6","babel-preset-env":"^1.7.0","eslint-plugin-jest":"^21.21.0","eslint-plugin-json":"^1.2.0","eslint-plugin-import":"^2.14.0","eslint-config-prettier":"^3.0.1","eslint-plugin-prettier":"^2.6.2","@financial-times/n-gage":"^2.0.4","eslint-config-airbnb-base":"13.1.0","babel-plugin-transform-object-rest-spread":"^6.26.0"},"_npmOperationalInternal":{"tmp":"tmp/n-api-factory_1.2.2_1534263579560_0.3443157652675306","host":"s3://npm-registry-packages"}}},"time":{"created":"2018-03-15T17:19:22.121Z","modified":"2026-06-23T16:02:17.316Z","0.0.1":"2018-03-15T17:19:22.256Z","0.0.2":"2018-03-16T12:14:30.061Z","1.0.1":"2018-03-16T13:49:01.457Z","1.0.2":"2018-03-16T13:52:59.964Z","1.0.3":"2018-04-04T16:42:48.048Z","1.1.0":"2018-05-21T14:41:04.519Z","1.1.1":"2018-07-25T11:46:36.872Z","1.1.2":"2018-07-25T15:30:44.757Z","1.2.1":"2018-08-10T13:41:23.245Z","1.2.2":"2018-08-14T16:19:39.643Z"},"bugs":{"url":"https://github.com/Financial-Times/n-api-factory/issues"},"author":{"name":"Zhenyu Lin","email":"zhenyu.lin@ft.com"},"license":"MIT","homepage":"https://github.com/Financial-Times/n-api-factory#readme","repository":{"url":"git+ssh://git@github.com/Financial-Times/n-api-factory.git","type":"git"},"description":"api service creator using `n-fetch` pattern, throws `n-error`, friendly to `n-auto-logger`, `n-auto-metrics`","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":"# n-api-factory [![npm version](https://badge.fury.io/js/%40financial-times%2Fn-api-factory.svg)](https://badge.fury.io/js/%40financial-times%2Fn-api-factory) [![CircleCI](https://circleci.com/gh/Financial-Times/n-api-factory.svg?style=shield)](https://circleci.com/gh/Financial-Times/workflows/n-api-factory) [![Coverage Status](https://coveralls.io/repos/github/Financial-Times/n-api-factory/badge.svg?branch=master)](https://coveralls.io/github/Financial-Times/n-api-factory?branch=master) [![Dependencies](https://david-dm.org/Financial-Times/n-api-factory.svg)](https://david-dm.org/Financial-Times/n-api-factory) [![Known Vulnerabilities](https://snyk.io/test/github/Financial-Times/n-api-factory/badge.svg)](https://snyk.io/test/github/Financial-Times/n-api-factory)\n\napi service creator using `n-fetch` pattern, throws `n-error`, friendly to `n-auto-logger`, `n-auto-metrics` \n\n- [quickstart](#quickstart)\n- [install](#install)\n- [usage](#usage)\n  * [switch TEST or PROD api](#switch-test-or-prod-api)\n  * [extend error handling](#extend-error-handling)\n  * [default headers](#default-headers)\n  * [extend headers](#extend-headers)\n  * [auto log and metrics](#auto-log-and-metrics)\n  * [transactionId from downstream request](#transactionid-from-downstream-request)\n  * [test stub](#test-stub)\n\n## quickstart\n\n```js\nimport setupService from '@financial-times/n-api-factory';\n\nconst yourApiService = setupService({\n  API_HOST: process.env.YOUR_API_SERVICE_HOST,\n  API_KEY: process.env.YOUR_API_SERVICE_KEY,\n});\n\nexport const getSomeResource = (\n  { someId, paramA, paramB }, \n  { transactionId, metaB }\n) => yourApiService.get({\n  endpoint: `/some-endpoint/${someId}`,\n  query: { paramA, paramB },\n  meta: { transactionId, metaB },\n});\n\nexport const addSomeResource = (body, meta) => yourApiService.post({\n  endpoint: `/some-endpoint/`,\n  body,\n  meta,\n});\n\nexport const deleteSomeResource = ({ someId }, meta) => yourApiService.delete({\n  endpoint: `/some-endpoint/${someId}`,\n  meta,\n}); // would return `undefined` if response `NO-CONTENT`\n```\n\n## install\n```shell\nnpm install @financial-times/n-api-factory\n```\n\n## usage\n\n### switch TEST or PROD api\n\nIt is handy to use flag to switch between TEST/PROD api\n\n```js\nconst useTestApi = flags.get('name-of-the-flag');\n\nconst config = {\n API_HOST: process.env[`THE_API_HOST_${useTestApi || devEnv ? 'TEST' : 'PROD'}`],\n API_KEY: process.env[`THE_API_KEY_${useTestApi || devEnv ? 'TEST' : 'PROD'}`],\n};\n\nconst theService = setupService(config);\n```\n\n### extend error handling\n```js\nimport nError, { CATEGORIES } from '@financial-times/n-error';\n\nexport const getAddress = async (params, meta) => {\n  try {\n    const address = await addressService.get({ endpoint, meta });\n    \n    if(validate(address)){\n      throw nError.unauthorised({ message: 'some message' }); // throw an nError of CUSTOM_ERROR category\n    }\n    \n    return address;\n  } catch(e) {\n    throw e;\n  }\n};\n\nexport const addAddress = async ({ body }, meta) => {\n  try {\n    await addressService.post({ endpoint, body, meta });\n  } catch(e) {\n    if(e.category === CATEGORIES.FETCH_RESPONSE_ERROR) {\n      const message = parseErrorMessage(e);\n      throw e.extend({ message }); // override .message to concise the log in this example\n    }\n    throw e; // throw other error categories: FETCH_NETWORK_ERROR, CUSTOM_ERROR, SYSTEM_ERROR\n  }\n};\n```\n\n### default headers\n```js\ntrimObject({\n  'Content-Type': 'application/json',\n  'x-api-key': API_KEY,\n  'FT-Transaction-Id': transactionId,\n  'X-Origin-System-Id': `https://cmdb.ft.com/systems/${systemId}`, // default to process.env.SYSTEM_CODE\n  'X-Origin-User': user, // default to 'customer'\n});\n```\n\n### extend headers\n```js\nexport const addSomeResource = ({ body }, meta) => yourApiService.post({\n  endpoint: `/some-endpoint/`,\n  body,\n  meta,\n  headers, // would be merged to default headers\n});\n```\n\n### auto log and metrics\n```js\nexport default compose(\n  tagService('name-of-api-service'),\n  metricsAction,\n  logActions,\n)({\n  getSomeResource,\n  addSomeResource,\n  deleteSomeResource\n});\n```\n\n### transactionId from downstream request\nit is handy to get the transactionId from the request header and add it to the meta of the call.\n```js\nconst transactionId = req.get('FT-Transaction-Id');\nconst meta = { transactionId, ...otherMeta };\nSomeService.someMethod(params, meta);\n```\n\n### test stub\n\nuse Jest.mock\n\n```js\nimport subscriptionApi from '../subscription-api.js';\n\nconst mockGet = jest.fn();\njest.mock('@financial-times/n-api-factory', () =>\n  jest.fn(() => ({\n    get: () => mockGet(),\n  })),\n);\n\ndescribe('subscriptionApi.getSubscriptions', () => {\n  afterEach(() => {\n    mockGet.mockReset();\n  });\n\n  it('return the subscriptions if valid subscriptions found', async () => {\n    const mockSubscriptions = [{ subscription: 'mock-subscription' }];\n    mockGet.mockImplementation(async () => mockSubscriptions);\n\n    const subscriptions = await getSubscriptions({ userId: 'mock-user-id' });\n    expect(subscriptions).toEqual(mockSubscriptions);\n  });\n});\n```\n\nYou can also use `proxyquire` to mock the module in similar means if you are using `mocha` or other test tools.\n","readmeFilename":"README.md"}