{"_id":"@alexsasharegan/middleware","_rev":"2-76e26fc169a40ead801f4ecd10f9a5e7","name":"@alexsasharegan/middleware","dist-tags":{"latest":"1.2.0"},"versions":{"1.1.2":{"name":"@alexsasharegan/middleware","version":"1.1.2","description":"A set of custom middleware.","main":"lib/index.js","scripts":{"build":"rm -Rf lib; tsc","prepublishOnly":"npm run build","release":"standard-version","postrelease":"git push --follow-tags origin master && npm publish --access=public","test":"echo \"Error: no test specified\" && exit 1"},"keywords":[],"author":{"name":"Alex Regan","email":"npm@33mail.alexregan.com"},"license":"MIT","peerDependencies":{"express":"latest"},"devDependencies":{"@types/express":"^4.17.1","@types/node":"^11.13.20","express":"^4.17.1","prettier":"^1.18.2","standard-version":"^5.0.2","typescript":"^3.6.3"},"dependencies":{"chalk":"^2.4.2","fmt-bytes":"^1.0.2"},"gitHead":"7c468b974a35306f6475055ddb75883b42d3e4f6","_id":"@alexsasharegan/middleware@1.1.2","_nodeVersion":"10.15.3","_npmVersion":"6.11.3","dist":{"integrity":"sha512-fu9W15S9d+2K4HauivEud7XDmoOgCgkMlDJ006tDd9LHjgAAFFpoP7vkUd6ZL2peJXlrUjJkXQqs7lqkfRJeCA==","shasum":"d3cd8d0c9dfcb34c7e77b3104fb99d7c672756a0","tarball":"https://registry.npmjs.org/@alexsasharegan/middleware/-/middleware-1.1.2.tgz","fileCount":24,"unpackedSize":46796,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdetV8CRA9TVsSAnZWagAAtRQP/1taTXu7ICq23CzUViih\n/usZx9+Sb4OUEHzXX8/2otQOl4wsWe6eLlfdV57LpnCh3+qqE9KOU8GGKGel\nejN3WfD5Bjv8qxpmPzLEA0uAUJWUn9mz51frvkKZyNrVry8nkuFPb4mDe5ZG\nejiJiKVZG08tvkN8OS8ycDh9fO3ax7mU7CrUlGXj3Ffc0WjkhX1nQA3CbwPM\nWJUdtqr439wtoSJ5hDLXqFIdnMAf0O45yE1n+KE7gp5OU6OuyZk2WJqmNyHm\nTVdj4+XreaMIO2Crw4CaixNTmqDgSU3YluZdAxsIPdNDvBAZowJC2H4S4sNj\nnyGnZyXF9W5436hXFRd/eVfKs0g6AM2nEo3+Bo4SF3H2o+4U31bn4NFaIHwN\nrDKlji9ueEY9ykqtZ/0i3iogNekIWC/LhesVieoOfGxt0Jy7NJpuX21DfQX+\n00jH6gXDciAi/5R1Okv9het82a7ZrDr8YP9sxADlXjMsRjlGm7yN0ALnXcC3\n4gougxODx/B9PXiaAiM0WtHKYr2AHvH1/bjCf+VeOMMuWY3gTCs1pOQNlN0I\nWgTjxr+in1zaDE0hYis5i27uhnObM+YFSsYXRQ1lFZIMUPVA6eEC0g49Jmiv\nI0+8ZyB2Y+9bCoDTyDl1X1FWOdqW+vXxOXxbRQKxHkQ78PGyJjGkfgeaOA57\n/HbB\r\n=J+OF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCbUtTduqFhFll6xH2LZoWLGdoUEZw4y2e4eWIVSi6gVAIhALWmWCG4m/GC35S2/axg4IbwIGm0+vI5kxlwTJhQL3SI"}]},"maintainers":[{"name":"alexsasharegan","email":"alex@alexregan.com"}],"_npmUser":{"name":"alexsasharegan","email":"alex@alexregan.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware_1.1.2_1568331131835_0.11890156754369263"},"_hasShrinkwrap":false},"1.2.0":{"name":"@alexsasharegan/middleware","version":"1.2.0","description":"A set of custom middleware.","main":"lib/index.js","scripts":{"build":"rm -Rf lib; tsc","prepublishOnly":"npm run build","release":"standard-version","postrelease":"git push --follow-tags origin master && npm publish --access=public","test":"echo \"Error: no test specified\" && exit 1"},"keywords":[],"author":{"name":"Alex Regan","email":"npm@33mail.alexregan.com"},"license":"MIT","peerDependencies":{"express":"latest"},"devDependencies":{"@types/express":"^4.17.1","@types/node":"^11.13.20","express":"^4.17.1","prettier":"^1.18.2","standard-version":"^5.0.2","typescript":"^3.6.3"},"dependencies":{"chalk":"^2.4.2","fmt-bytes":"^1.0.2"},"gitHead":"e0ae0c2aef5ae6faf80e687cefc7261ad105a3bd","_id":"@alexsasharegan/middleware@1.2.0","_nodeVersion":"10.15.3","_npmVersion":"6.11.3","dist":{"integrity":"sha512-/RaelUQEaBSy3Q9SDGLOTNr9Xh9tbimtHpZU6mxYV5TDajKQxOg4vw9Cwu+3T8+tN+GHl5CHUzl2ozJ/m4Dacw==","shasum":"171aade841f436035879ebb6e9688e18157a7efa","tarball":"https://registry.npmjs.org/@alexsasharegan/middleware/-/middleware-1.2.0.tgz","fileCount":24,"unpackedSize":49751,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdfSHOCRA9TVsSAnZWagAACQ0QAIVQJ11nkayn1rkOZdAx\nPwpzaooQxE51AbUnwKkEebpjdxjaoXt8l31acSFTUyAvzsc3abd/2SonNk7l\nkp3lyAoFFye2wYcDjXo4LpnpmfW4nIZIiB1kbNXPslJ6r3fkzo6Dysf/PC/7\nhpQyD8UfhHOqNcpNCf3qzuMtpiLuzSKGmZl6a7T/hn3mpUi0AUGr5hcDVtSw\nCc0rHR9LZxr8xUyFuufIn+muXurCBrscjWifI8iGtNe9OwtTczq/lxfdvnmN\nXs52BVkakBzHoW333bSXCAMhaBCXmsmDbYzYN+Ets8R66MOqwT/52+YesX1h\nJIujVDZ5PiWXShybyc/+owOugfI+XaXgtp9Qn1j7BOKc+vtrP3JoAUNrsFtb\nhz8jaJLrd3kO1rU8s3uE8CLT0WDglYOYj9KV8zMiGuhNnsvv4GvS/4EoeAQq\nFyrNPeheQxbLN8VTwJn71q8vUd0oBWWKLCI1CxkqWgsu8JAxj7jjD88fiXi7\njqQnka519UfhDbQq2b6m+8zlGx437gMRj3tCgwpPL/e/bGX4QhlQ0V00VSc/\nsAjJlCE82eBxZyDqfZuRpGqIgCHIlXIz8cdY4B8ngqdGBKn/sbob+hGx21Jw\nWE1BhRo5aMJSxiRP09YAKbzuKDJ9zTEXdBU9m8GRcQlDotMeTmhH1MuAD8/m\nY8B9\r\n=u+Ng\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD5ci81bkw6+5C8+xbxRacyzv3HYo1sP1DdoBuAk4BLGwIgDLEOxWGaVtuyyL9X5+GWzFqWSF7TXGegAmUXLgAEtQI="}]},"maintainers":[{"name":"alexsasharegan","email":"alex@alexregan.com"}],"_npmUser":{"name":"alexsasharegan","email":"alex@alexregan.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/middleware_1.2.0_1568481741796_0.4473678244068606"},"_hasShrinkwrap":false}},"time":{"created":"2019-09-12T23:32:11.600Z","1.1.2":"2019-09-12T23:32:11.983Z","modified":"2022-04-04T12:41:33.048Z","1.2.0":"2019-09-14T17:22:21.951Z"},"maintainers":[{"name":"alexsasharegan","email":"alex@alexregan.com"}],"description":"A set of custom middleware.","keywords":[],"author":{"name":"Alex Regan","email":"npm@33mail.alexregan.com"},"license":"MIT","readme":"# Middleware\n\nA collection of express/connect middleware.\n\n## Exports\n\n- `RequestId`: Class for adding request ids.\n- `RequestLog`: Class for logging requests.\n- `RequestLogOptions`: [TypeScript] Configuration parameters for the RequestLog middleware.\n\n### `RequestId`\n\nA class to uniquely id incoming requests. Use the inject middleware at the beginning of your stack.\n\n```ts\nimport express from \"express\";\nimport { RequestId } from \"@alexsasharegan/middleware\";\n\nconst app = express();\n// This middleware injects a request id in both the request/response objects.\n// It does not set any headers.\napp.use(RequestId.injectMiddleware);\n// This sets the request id on the response header.\napp.use(RequestId.setHeaderMiddleware);\n// This is the default header name used. Customize it to use a different name.\nRequestId.headerName = \"X-Request-ID\";\n```\n\nIf you need to make use of the id for something like writing it in response headers, an extract method is available:\n\n```ts\napp.get(\"/\", function(req, res) {\n\t// You can extract from either the request/response.\n\tlet requestId = RequestId.extract(req);\n\tres.setHeader(\"X-Request-ID\", requestId.toString());\n\tres.end();\n});\n```\n\n### `RequestLog`\n\nA class to log requests. Call the middleware function to configure a middleware handler. Place is at the beginning of\nyour stack.\n\n```ts\nimport express from \"express\";\nimport { RequestId, RequestLog } from \"@alexsasharegan/middleware\";\n\nconst app = express();\n\n// Set up the request id injector to enable request ids in the logs.\napp.use(RequestId.injectMiddleware);\napp.use(RequestId.setHeaderMiddleware);\n\n// Make sure to place this after the request id middleware,\n// but at the beginning of the middleware chain to get accurate timing.\napp.use(\n\tRequestLog.middleware({\n\t\twithColors: true, // tty color output\n\t\tnewLine: RequestLog.NewLine.LF, // Linux/Mac style new line.\n\t\tstream: process.stderr, // log to any stream\n\t})\n);\n```\n\n![request log example](./docs/request-log.jpeg)\n\n```sh\n$ curl -I localhost:3333\n\nHTTP/1.1 200 OK\nX-Powered-By: Express\nX-Request-ID: alex-oryx/aMzi8qbV9t-000003\nContent-Type: text/html; charset=utf-8\nContent-Length: 210\nETag: W/\"d2-GN0jX1nIvHaoCqXqmz8Mk80JF74\"\nDate: Sat, 02 Mar 2019 15:50:53 GMT\nConnection: keep-alive\n```\n","readmeFilename":"README.md"}