{"_id":"@dfrechette/rendertron-middleware","_rev":"3-bfde8b603c38df27994d6db9ee9346dd","name":"@dfrechette/rendertron-middleware","dist-tags":{"latest":"0.1.8"},"versions":{"0.1.6":{"name":"@dfrechette/rendertron-middleware","version":"0.1.6","description":"Express middleware for the rendertron service.","engines":{"node":">=6"},"main":"build/middleware.js","types":"build/middleware.d.ts","scripts":{"build":"tsc","prepack":"npm run build","lint":"tslint --project . --format stylish","format":"find src -name '*.ts' | xargs clang-format --style=file -i","test":"npm run build && ava build/*/*-test.js"},"license":"Apache-2.0","dependencies":{"@types/express":"^4.16.0","request":"^2.87.0"},"devDependencies":{"@types/request":"^2.47.1","@types/supertest":"^2.0.5","ava":"^2.3.0","clang-format":"^1.2.4","express":"^4.16.3","supertest":"^3.0.0","tslint":"^5.11.0","typescript":"^3.0.1"},"_id":"@dfrechette/rendertron-middleware@0.1.6","_npmVersion":"6.1.0","_nodeVersion":"10.5.0","_npmUser":{"name":"dfrechette","email":"david.frechette@cossette.com"},"dist":{"integrity":"sha512-VHu0NBD2QkN5krjhCjpWSSAvC95inZAD5hO6ogGrQ5EqKOo+55zPln/WHueyV524XQKe4TdlOWFSAFr94o5gBg==","shasum":"62eb2e17438bf9c7ce3e043c09a76012866e7404","tarball":"https://registry.npmjs.org/@dfrechette/rendertron-middleware/-/rendertron-middleware-0.1.6.tgz","fileCount":7,"unpackedSize":21704,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdlDzdCRA9TVsSAnZWagAACecP/Rd+dxyDp8yLAiACFaGQ\n8uisiS76dKFcfLCpZKAAG6+dFCe8qhKXH7XLVZgc28VufdeDnPrFqVrGMz4Q\nfxRt5xgTl1iKb8x/JuDPGImqnqPysByRSfoviaSCPv6usIuOQpW2mpr5ov7z\nnNvEQv90xd7COl6aO8Y6uzDtuUv+741Xlpt4GcqY7zWYAr83K1Cd0KcssaRr\nfH68Z6rD3rysIVSsBItjyaIn8GRPKNrll1uO+QetZ43TfOammy1Ki22yCqg4\nyi70T4NOfURFtolotCAjRdYOndP22FSbelWjoSJ5/hA0o+oihLPD5IGN4AQc\nUf1iuRNzH11EfLVZVjWZ/FvaalWDTbZnSEUxAeMvbbn1fZ69NPC3oHV4nFIY\nJVMdvDM87mYaqNW8PNSStFMS1gLA15c1AYj3uyBpQMUpoGAiS8h9uljwtpQE\npJrPb8JnOIyxpR4ZvcfqbAboT74352KgLaL4P1G7hi7xTEqPPkOTv1EKqNH6\n0+1kI1J4cP95FtLwg/Acyi2mkeXBKSYel1NeVbuNj5GINw78awoJsMCqcK5u\n7F5Gqs+82l1LawBfL36Hv5ekFk2hZ/KKRFazfXxNCLdojan/N9UsGIo6nKhg\nOnErBLyr+C2VCuloFIm5Pi2Rk6F5URuQRk4mHazeXfBpOWn+3BDorBatlwOJ\n//kW\r\n=uyRm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD6BaSTr5enH/rMCfKPkV43MfjxWok35aawV/7QUw0nHAIhAKkCLpXXfbbF6rTPxA+U1G/dMM/cGOL5Mjc1Sh7PwR2X"}]},"maintainers":[{"name":"dfrechette","email":"david.frechette@cossette.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rendertron-middleware_0.1.6_1569995997035_0.17032078308441934"},"_hasShrinkwrap":false},"0.1.7":{"name":"@dfrechette/rendertron-middleware","version":"0.1.7","description":"Express middleware for the rendertron service.","engines":{"node":">=6"},"main":"build/middleware.js","types":"build/middleware.d.ts","scripts":{"build":"tsc","prepack":"npm run build","lint":"tslint --project . --format stylish","format":"find src -name '*.ts' | xargs clang-format --style=file -i","test":"npm run build && ava build/*/*-test.js"},"license":"Apache-2.0","dependencies":{"@types/express":"^4.16.0","request":"^2.87.0"},"devDependencies":{"@types/request":"^2.47.1","@types/supertest":"^2.0.5","ava":"^2.3.0","clang-format":"^1.2.4","express":"^4.16.3","supertest":"^3.0.0","tslint":"^5.11.0","typescript":"^3.0.1"},"_id":"@dfrechette/rendertron-middleware@0.1.7","_npmVersion":"6.1.0","_nodeVersion":"10.5.0","_npmUser":{"name":"dfrechette","email":"david.frechette@cossette.com"},"dist":{"integrity":"sha512-U0qDk3gtpdGmU0PonnQMIyWrCbASw+zw11e78W9vc9kASurkKKHymg0IwF7SqURJotloX28SRm2+arBTl/vqCQ==","shasum":"96af4fe800baa9e4ca0af938f635b8bc8759219b","tarball":"https://registry.npmjs.org/@dfrechette/rendertron-middleware/-/rendertron-middleware-0.1.7.tgz","fileCount":7,"unpackedSize":24619,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdlECcCRA9TVsSAnZWagAABQoQAKCUOu4HlI/zSGBeftxP\nUpYuL8ZRMuEzoHmh47EX8d1+00PVjp1NibDRcKVgoIEptnEGYI0y2Rkynt9i\nv0B6FyFJPreP7ptfWQkd/iz4QVZ6dgZhNiIi34oS4DpOfDdMEZ3K3tK8yC4T\nO2Yk27LuRau8A6JesLpt/oZCoWpY3VuNbIVDLa8eC73OKFch5wsBe75AxsED\noVp9ZCbU/KytrY5U0d6GwFeJ3BqdgnDoofL5za/a1+cokDG9x7XYC8oBN88l\nytQkwbTUjkFVUcUIoow8DXUopI4tDe6qKJ6+qN516azna3XBwcrVdNrCcxpi\nUhOX4Ih6yK2i9gxtuZ7HhOYOu2MGeTyFjS/THSLDaRv1r7I/lsvU2fzJL+3f\nsVPMe9hp5YyLOsIbnP6jPLpt9njvd+jOvBrxsIxTXHf91QlLdohsPSg829MD\nFGrP1uE23I0oAyiOJHgcCzU6ezgDFpPT6QfFPY1i/v1PFFr10AEBSwrUX7iC\nGcarDCea1cCGmo9XH+pLVB4CFlwLPl/ann5rcfgp/gMsI61GOVIzpCbHJK2l\no2I5w+hmwQda1Z3RgZzS4VxE4//nxNzU5UkR+r1bWPGAOl2glFgycYzq9bZS\n1vTuu7ZO7sBzDEGWsoJUS1Ai/6WAyTwg1IvJKf3nAYY5tMhj5DhqeGsmmmUu\nnUXH\r\n=hS3C\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGpPhO9CKPN/ywmAsN6Un2+ltiv9olRkuPGsg5wLUXYDAiEApycCbvyCcSmHlusFlJXLnYh1Lo8DjRSDQTBDL2S5PJg="}]},"maintainers":[{"name":"dfrechette","email":"david.frechette@cossette.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rendertron-middleware_0.1.7_1569996956091_0.40086993229508594"},"_hasShrinkwrap":false},"0.1.8":{"name":"@dfrechette/rendertron-middleware","version":"0.1.8","description":"Express middleware for the rendertron service.","engines":{"node":">=6"},"main":"build/middleware.js","types":"build/middleware.d.ts","scripts":{"build":"tsc","prepack":"npm run build","lint":"tslint --project . --format stylish","format":"find src -name '*.ts' | xargs clang-format --style=file -i","test":"npm run build && ava build/*/*-test.js"},"license":"Apache-2.0","dependencies":{"@types/express":"^4.16.0","request":"^2.87.0"},"devDependencies":{"@types/request":"^2.47.1","@types/supertest":"^2.0.5","ava":"^2.3.0","clang-format":"^1.2.4","express":"^4.16.3","supertest":"^3.0.0","tslint":"^5.11.0","typescript":"^3.0.1"},"_id":"@dfrechette/rendertron-middleware@0.1.8","_npmVersion":"6.1.0","_nodeVersion":"10.5.0","_npmUser":{"name":"dfrechette","email":"david.frechette@cossette.com"},"dist":{"integrity":"sha512-sqPzIS3oPHwEstG4VtlOMgvKrY6aKA8UMuSNlZ/OMIReRw8Xwo6mK6kN3fgofi0DsdSxdnyOOQ8W/zLdESYuWQ==","shasum":"3b678bce50afe9577c6221113860001fb0940363","tarball":"https://registry.npmjs.org/@dfrechette/rendertron-middleware/-/rendertron-middleware-0.1.8.tgz","fileCount":7,"unpackedSize":25446,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdlI6dCRA9TVsSAnZWagAAVpEP/3buQ2//FrWPCQYLq6BC\n2Jk0ZftMX3GntnknuVr+M4bHh1v19yGEjGkAL+/+lSOcLuIKnnYC1DuHsGqY\nuSsGO/bD6+/3bxORmQwK21r/d8uOovW3TnD7p47Me1YOUEQawg9Xe0GJhfvX\n0HQesfjjHfT8SacjkBl61+9gXZ/h4iDKeW0QltYQJM+LSTTQIka6JBGGtd4F\nHGXJ1tr9zh+BatVN6Mi6o07qxPZwjsDAIASL3kJmZauJ2AB4OBWEh8SzUK8F\nblaylUxz99NDQJzGfdRaGwa3xUTstamNL7pVTClyB43jumsGZ3Yw96jrSXIV\n7ANOnKUtSc894+ND/PT65DBCPirvHVkggk33MADcEWH10sL+b/Lz+VPn+eSm\neigyzHWYA/PFPBOySrE4oeARFJMx7NkE5ObDoEfARn3+1H8iF6vUtXz3o9zu\nMpZuiWt/SlVK7WtY8KL60WajCZJ7uRAFr1oQCCeq+aRNDiZDFRoTR6B9IVpq\nyCC9MNtBYFTRbMT6YR0+8Sbl3JKIkdHy2x+j242Hfy+vBDMEGsWo9+O1D+Fe\nQTGX43Bc2aSapWSDpGkTIPV6DtLZ+UvK/MEwb+SV8zEw178ZY8nj7DNZ2Sh9\nsnq/m0GgeOs8rmc1u8vKtQtIqiW3meFzOwpW7aOEKKkv4aDcdAczgdfiRx4Q\nOg/l\r\n=7ZHC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAxlp0S2Uh5Kbv02t234a7KLY76MltTV4MP/qKj8lspIAiEA0rU7KVIHwPVBX+2f1LokVgLtY7PkeApmD/ZtdHeUVns="}]},"maintainers":[{"name":"dfrechette","email":"david.frechette@cossette.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/rendertron-middleware_0.1.8_1570016924730_0.0363385918146546"},"_hasShrinkwrap":false}},"time":{"created":"2019-10-02T05:59:56.799Z","0.1.6":"2019-10-02T05:59:57.149Z","modified":"2022-04-05T04:17:47.749Z","0.1.7":"2019-10-02T06:15:56.249Z","0.1.8":"2019-10-02T11:48:44.888Z"},"maintainers":[{"name":"dfrechette","email":"david.frechette@cossette.com"}],"description":"Express middleware for the rendertron service.","license":"Apache-2.0","readme":"[![Build status](https://img.shields.io/travis/samuelli/bot-render.svg?style=flat-square)](https://travis-ci.org/samuelli/bot-render)\n[![NPM version](http://img.shields.io/npm/v/rendertron-middleware.svg)](https://www.npmjs.com/package/rendertron-middleware)\n\n# rendertron-middleware\n\nAn Express middleware for [Rendertron](https://github.com/samuelli/bot-render).\n\nRendertron is a server which runs headless Chrome and renders web pages on the fly, which can be set up to serve pages to search engines, social networks and link rendering bots.\n\nThis middleware checks the User-Agent header of incoming requests, and if it matches one of a configurable set of bots, proxies that request through Rendertron.\n\n## Usage\n```sh\n$ npm install --save express @dfrechette/rendertron-middleware\n```\n\n```js\nconst functions = require('firebase-functions');\nconst express = require('express');\nconst app = express();\nconst rendertron = require('rendertron-middleware');\n\nconst BOTS = rendertron.botUserAgents.concat('googlebot');\nconst BOT_UA_PATTERN = new RegExp(BOTS.join('|'), 'i');\n\napp.use(rendertron.makeMiddleware({\n  proxyUrl: 'http://my-rendertron-instance/render',\n  userAgentPattern: BOT_UA_PATTERN,\n  host: 'my-fancy-domain.com', // optional\n  protocol: 'https' // optional\n}));\n\n...\n```\n\n## Configuration\n\nThe `makeMiddleware` function takes a configuration object with the following\nproperties:\n\n| Property            | Default                                                                                                                                            | Description                                                                                                                                                                                                                                                                                            |\n| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `proxyUrl`          | *Required*                                                                                                                                         | Base URL of your running Rendertron proxy service.                                                                                                                                                                                                                                                     |\n| `host`              | `req.get('host')`                                                                                                                                  | Specify an external domain to use for the URL sent to the rendertron service. Ex. Firebase hosting that rewrite queries to a cloud function, the `req.get('host')` would be the cloud function domain and not the website.                                                                             |\n| `protocol`          | `req.protocol`                                                                                                                                     | Force a specific protocol to use when building the URL to be pass to rendertron                                                                                                                                                                                                                        |\n| `userAgentPattern`  | A set of known bots that benefit from pre-rendering. [Full list.](https://github.com/samuelli/bot-render/blob/master/middleware/src/middleware.ts) | RegExp for matching requests by User-Agent header.                                                                                                                                                                                                                                                     |\n| `excludeUrlPattern` | A set of known static file extensions. [Full list.](https://github.com/samuelli/bot-render/blob/master/middleware/src/middleware.ts)               | RegExp for excluding requests by the path component of the URL.                                                                                                                                                                                                                                        |\n| `injectShadyDom`    | `false`                                                                                                                                            | Force the web components polyfills to be loaded. [Read more.](https://github.com/samuelli/bot-render#web-components)                                                                                                                                                                                   |\n| `timeout`           | `11000`                                                                                                                                            | Millisecond timeout for the proxy request to Rendertron. If exceeded, the standard response is served (i.e. `next()` is called). This is **not** the timeout for the Rendertron server itself. See also the [Rendertron timeout.](https://github.com/googlechrome/rendertron#rendering-budget-timeout) |\n\n\n","readmeFilename":"README.md"}