{"_id":"@ampproject/toolbox-optimizer-express","_rev":"104-a96e98f5c5b11e5ff5ba9c5309257f55","name":"@ampproject/toolbox-optimizer-express","description":"Express middleware for @ampproject/toolbox-optimizer","dist-tags":{"beta":"1.1.0-beta.0","alpha":"2.7.0-alpha.1","canary":"3.0.0-canary.2","latest":"2.10.1"},"versions":{"1.0.0-beta.0":{"name":"@ampproject/toolbox-optimizer-express","version":"1.0.0-beta.0","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@1.0.0-beta.0","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"choumx","email":"willchou@google.com"},{"name":"sepandparhami","email":"sparhami@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"4d290610e5466682bfd6b736e994e96275d49575","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-1.0.0-beta.0.tgz","fileCount":5,"integrity":"sha512-F+cMyYPykeEAgZKLlDJkDrXx/O/bpV+liIIJ+ySPvqRMVuC/tYwzEqffrrpuYTRDDJ8UWKjsvHCBQjPdq2ciUA==","signatures":[{"sig":"MEUCIQDP7XicD7zggVx0mZihUAUCkZqTPYZjyCA2Kp4ElUE+YAIgR5/YHkozRKenN/ZZmx6zRL7Wqrb7TY5l3e2JU1B9Oqo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11429,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc/p+UCRA9TVsSAnZWagAA4t0P/RIljvcfPCQX0eNqC9gX\n/FroX+eD5Qr37ySNkTAxzmG5dapyDS0ZBlx+xZTverMyD6cQlhLB6xPhwd9V\neFPhpY0/2q9ClYEn1eoGomNhp9enCimOGVyF1+7cMqlzLuU8PXvq6uoxe/j0\nem9lgnAGntoW5hrrDwPKAtGxwnJdPRawsUf0sf8r6Xd8/Y7D34h67KKCZcc5\nEhg9G/3gLYwdVxr4W9+vC00AUdKy47a+pwN5QeUPzYs5EOwv7Yw8+jU5OtnJ\nu3tvUcXFLtT9oLu29e/tNx3SxGRu97NT815KU5WXMhCf4FItqNvz5LgYLQk6\nl4+Ff6vrtCfXmoFOE1dFHh6tByjaowZMfB69nITGfT6hivAa3AK0wunPbjo6\n0yBOJEuD6CXoV1OVwKi551jnqRLKjQbVeEoSrY0fe/c0q4qNLieO5cbAmqUa\n+4765qE0XAW2jJn5hrn2BGaZMSteYA8oEftrIl3az4xpmJwkT9/M+3buq9kR\nwBmRzR5P/falapp+f+0ZKxuILv7JUeamcHB9ZeijvZrw8H0jo4qpcYwyVNMl\nZsv+KQQcdvXeUTCtyXE+dY2SIDWUDDVt5OtBc244QyCDIiPCJ5kEZvtWXtRw\np5D9+icdKySdyB/YPP+yjQnlnKgXqnLrOCB1ERlGT84tbs7nrfos+VeIJdrJ\nCoGX\r\n=NyP3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"68bce56d4878ace45b6573824a56656667db5c85","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git"},"_npmVersion":"6.9.0","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"10.16.0","dependencies":{"mime-types":"2.1.24","whatwg-url":"7.0.0","@ampproject/toolbox-core":"^1.0.0-beta.0","@ampproject/toolbox-optimizer":"^1.0.0-beta.0","@ampproject/toolbox-runtime-version":"^1.0.0-beta.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_1.0.0-beta.0_1560190867478_0.9027151438883163","host":"s3://npm-registry-packages"}},"1.0.0-beta.3":{"name":"@ampproject/toolbox-optimizer-express","version":"1.0.0-beta.3","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@1.0.0-beta.3","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"sepandparhami","email":"sparhami@google.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"851acde291d377d2b02ad77a27c5d9d62224fe3f","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-1.0.0-beta.3.tgz","fileCount":6,"integrity":"sha512-bnjpW9yMO30Bf77SBtRdVZJ9NENHftUwfJPFfWDITEkY/9R3Qj8L8mo/yFTaw8fGeiufci50yVpOPOWm8eCs/Q==","signatures":[{"sig":"MEUCIBMcLSTOD1ZwhKVDT0niBeSBF53ojViBpMZtL93frLvNAiEAuwN2E+iO+634B97J8Sc+HhLfH9u0aJ2GNnDUYp4mrL4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22852,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdC1boCRA9TVsSAnZWagAAnOUP/iFY3iWVItqYZbGVzog+\nzFDkZ1Nsj9OG2pzo0NcRGWJm77XNqdIfGsNpGiR/uiN1ZVmtj7ycmdk9FSk5\nmCfsHZfc5CNGaAUbkw6qPJ2t5ElEiHUuG2wqHqwuI7T4vigm/xfUMJnYfC9R\nR8G6+iav9MWBq63WAgV6Hi17raagBL604NjCZisrkH9b2BEuBgynfva6mxKs\n7rRrphkHActVWLdBX9E8w3XjBmc9Kac1wGsg6WMSe4LVBz2lhoZ7Ptrbw+3r\nYYYBkUY/f6tRiCPzcWTTXMtI7FLypkmDXVisc+q55OgLAM7J1L+K+T5N6L1r\nmqPl928kRJfnQOGClhT48IqgmM15CfDvnsf4VVAUZ7EW+Y/Ek7whm/QzfQFw\nPD57yKYGrCBr4xecVzeAaQw9AjpJuEZ97WOkw15ZM+6zKiUyIdWCASmGwykH\naT2QgCaz7WHKXjTg0g1HNBV8Bj8qsuKpoFSaCrEctAZXTaBGoi+oXGKKKoqH\neCPns6znkXnbaMmSMDk4QpktInvGZt9yFvgcYrxYz+eTCNYOVB7L3s0+vSzt\nHtF3XF0d2Y3jIimpbI1IIe5OcfxPzbzF1pety5MaC8nbOgdyqpyCQVTkeyLa\niCeaZNY/ltuaM1ZWNaoYCSULpDXGHxsvU6O4c7oKQPG5xPRSmOmCMH6ljmPW\nqkbS\r\n=0pXR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"## Introduction\n\n[![npm version](https://badge.fury.io/js/@ampproject/toolbox-optimizer-express.svg)](https://badge.fury.io/js/@ampproject/toolbox-optimizer-express)\n\namp-optimizer-express is an [express](http://expressjs.com/) middleware that optimizes page load\ntimes for websites using AMP for their canonical pages. The middleware uses the same\nserver-side-rendering optimizations as the Google AMP Cache.\n\nThe middleware uses the [amp-optimizer](../optimizer) component to apply server-side-rendering on the fly.\n\n## How it works\n\namp-optimizer-express intercepts the responses and replaces their content with a version that has been\ntransformed by [amp-optimizer](../optimizer).\n\nAs the server-side-rendered version of the content is not valid AMP, the component also\nprovides the original content on an alternative URL. Server-side-rendering\ntransformations are not applied to this URL, and the original valid AMP is served.\n\nAn AMPHTML link tag is added to the server-side-rendered version, linking it to the original valid\nAMP version hosted on the alternative URL.\n\nExample:\n\nA valid AMP page is served on `https://example.com/index.html`.\n\nWhen the amp-optimizer-express middleware is used, that URL will serve the server-side-rendered version\nof the content.\n\nThe original, valid AMP will then become available at `https://example.com/index.html?amp`.\n\nAn amphtml link will be added to the server-side-rendered version:\n\n```html\n<link rel=\"amphtml\" href=\"https://example.com/index.html?amp\">\n```\n\n## Usage\n\nInstall via:\n\n```\n$ npm install @ampproject/toolbox-optimizer-express@beta\n```\n\nThe AMP Optimizer Middleware can be used like any other express middleware.\n\nIt is important that the middleware is used *before* the middleware or route that renders the page.\n\nThe example bellow will transform HTML being loaded by express-static:\n\n```javascript\nconst express = require('express');\nconst path = require('path');\nconst app = express();\nconst AmpOptimizerMiddleware = require('@ampproject/toolbox-optimizer-express');\n\n// It's important that the AmpOptimizerMiddleware is added *before* the static middleware.\n// This allows us to replace the parts needed before static handles the request.\napp.use(AmpOptimizerMiddleware.create());\n\nconst staticMiddleware = express.static(path.join(__dirname, '/public'));\napp.use(staticMiddleware);\n```\n\n## Options\n\nThe following options are supported:\n\n   * `runtimeVersion`: true if the optimizer should use versioned runtime imports (default is false).\n   * `ampOnly`: true if the optimizer should only be applied to AMP files (indicated by the lightning bolt in the header).\n\nExample:\n\n```\napp.use(AmpOptimizerMiddleware.create({\n  runtimeVersion: true\n});\n```\n\n## Best Practice: Cache server-side-rendered AMPs\n\nTo achieve best performance, those transformations shouldn't be applied for\nevery request. Instead, transformations should only be applied the *first time*\na page is requested, and the results then cached. Caching can happen on the CDN\nlevel, on the site's internal infrastructure (e.g.: Memcached), or even on the\nserver itself, if the set of pages is small enough to fit in memory.\n","gitHead":"182e821deefc39940858ab46912e55f1f3da59f5","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git"},"_npmVersion":"lerna/3.15.0/node@v10.16.0+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"10.16.0","dependencies":{"mime-types":"2.1.24","whatwg-url":"7.0.0","@ampproject/toolbox-core":"^1.0.0-beta.3","@ampproject/toolbox-optimizer":"^1.0.0-beta.3","@ampproject/toolbox-runtime-version":"^1.0.0-beta.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_1.0.0-beta.3_1561024231624_0.2610343036154772","host":"s3://npm-registry-packages"}},"1.0.0-beta.4":{"name":"@ampproject/toolbox-optimizer-express","version":"1.0.0-beta.4","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@1.0.0-beta.4","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"sepandparhami","email":"sparhami@google.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"54ece85056b24169432553b532c8e98800019266","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-1.0.0-beta.4.tgz","fileCount":5,"integrity":"sha512-fX6OyyD8/7kwOjmPLwrlDF/cBbCdKI7s0Az90LXFReXzcBRSW8HT3vk6pbpa3A7zeKhBR+mnhDnLJbLY+pSD3A==","signatures":[{"sig":"MEUCIGvsOaixuRYjTi9QkX/ptYZFVVF6c1ledaYLQ9HHqRlRAiEAjAJ4Q0Gt6C0p2ZcP9QnK1M9kFaDSEBB/m/SWLYchbww=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11511,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJ0nXCRA9TVsSAnZWagAAjZYQAJYC4bqwgo8Qnm5avE3R\n4LwmdIXpHCGcHfq2K31xaOqqK/7t7l936MIgrt567jWARrbPIU+V2Y8m9WzL\nNMwYVH2PPLohfxIkKNFjKCZP559ys0uOJqjKERRhVKK2PtRKlBMvPkk2VJhW\n/gZU3yoJ4GAe88MfpwTNusvK2hSq0GQQT9Mtb1IV4ovtQQRfdXqDrZvGpEwj\ntmRzoEZ/L14dMR1gwcnrkyZ9DsyuwSDjHTRt+94DX5kq8hnRPMHRbJ7uxPei\nLEUSWyEGO3pPJaxugvwX6fbF5pX8FmpeLKyCep13v+xIs76/JIBhNhhgtgyR\nJGlW8P/8I7z8IJGk9jJs/xV051GO9JzjsLHcUkdGiHQSAutGuV5a0OTHkC9R\nWMAVYqm5jdwC7eXxogSAnlpg9aA9B2fEpnNfSUcNH0aevYGUqHSTaSuqcB04\njMQ1q1XNFmH+AUVaisjhtKkMnufsO7iZ2/Pu83oRbF0FHMy0s++bUbIOoazL\nVWoEnTBCzNdItvZn5mDLYtlHFHXJZDbO7ZWbPKV8KVD7qwOt8LPGiEuLiVA4\nIIPwfN/0AiWQC4O29eraZHb/g70/p6+pmXHC6eKY10R54NiOEB4w1WkMQDVN\n98IMMMKUQmk5AIY1+dTV73Fw4EBmyBof0aPgTvoEusPBbiNgl7REHO7FwO5w\nbH/c\r\n=EXa8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"## Introduction\n\n[![npm version](https://badge.fury.io/js/@ampproject/toolbox-optimizer-express.svg)](https://badge.fury.io/js/@ampproject/toolbox-optimizer-express)\n\namp-optimizer-express is an [express](http://expressjs.com/) middleware that optimizes page load\ntimes for websites using AMP for their canonical pages. The middleware uses the same\nserver-side-rendering optimizations as the Google AMP Cache.\n\nThe middleware uses the [amp-optimizer](../optimizer) component to apply server-side-rendering on the fly.\n\n## How it works\n\namp-optimizer-express intercepts the responses and replaces their content with a version that has been\ntransformed by [amp-optimizer](../optimizer).\n\nAs the server-side-rendered version of the content is not valid AMP, the component also\nprovides the original content on an alternative URL. Server-side-rendering\ntransformations are not applied to this URL, and the original valid AMP is served.\n\nAn AMPHTML link tag is added to the server-side-rendered version, linking it to the original valid\nAMP version hosted on the alternative URL.\n\nExample:\n\nA valid AMP page is served on `https://example.com/index.html`.\n\nWhen the amp-optimizer-express middleware is used, that URL will serve the server-side-rendered version\nof the content.\n\nThe original, valid AMP will then become available at `https://example.com/index.html?amp`.\n\nAn amphtml link will be added to the server-side-rendered version:\n\n```html\n<link rel=\"amphtml\" href=\"https://example.com/index.html?amp\">\n```\n\n## Usage\n\nInstall via:\n\n```\n$ npm install @ampproject/toolbox-optimizer-express@canary\n```\n\nThe AMP Optimizer Middleware can be used like any other express middleware.\n\nIt is important that the middleware is used *before* the middleware or route that renders the page.\n\nThe example bellow will transform HTML being loaded by express-static:\n\n```javascript\nconst express = require('express');\nconst path = require('path');\nconst app = express();\nconst AmpOptimizerMiddleware = require('@ampproject/toolbox-optimizer-express');\n\n// It's important that the AmpOptimizerMiddleware is added *before* the static middleware.\n// This allows us to replace the parts needed before static handles the request.\napp.use(AmpOptimizerMiddleware.create());\n\nconst staticMiddleware = express.static(path.join(__dirname, '/public'));\napp.use(staticMiddleware);\n```\n\n## Options\n\nThe following options are supported:\n\n   * `runtimeVersion`: true if the optimizer should use versioned runtime imports (default is false).\n   * `ampOnly`: true if the optimizer should only be applied to AMP files (indicated by the lightning bolt in the header).\n\nExample:\n\n```\napp.use(AmpOptimizerMiddleware.create({\n  runtimeVersion: true\n});\n```\n\n## Best Practice: Cache server-side-rendered AMPs\n\nTo achieve best performance, those transformations shouldn't be applied for\nevery request. Instead, transformations should only be applied the *first time*\na page is requested, and the results then cached. Caching can happen on the CDN\nlevel, on the site's internal infrastructure (e.g.: Memcached), or even on the\nserver itself, if the set of pages is small enough to fit in memory.\n","gitHead":"cb496f081c871a25dc73113ae1e1fccfb59b2732","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git"},"_npmVersion":"6.9.0","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"10.16.0","dependencies":{"mime-types":"2.1.24","whatwg-url":"7.0.0","@ampproject/toolbox-core":"^1.0.0-beta.4","@ampproject/toolbox-optimizer":"^1.0.0-beta.4","@ampproject/toolbox-runtime-version":"^1.0.0-beta.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_1.0.0-beta.4_1562855894981_0.11304316098763967","host":"s3://npm-registry-packages"}},"1.0.0-beta.5":{"name":"@ampproject/toolbox-optimizer-express","version":"1.0.0-beta.5","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@1.0.0-beta.5","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"sepandparhami","email":"sparhami@google.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"1f69df654742671d428b5813bdf5f5be884d28c8","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-1.0.0-beta.5.tgz","fileCount":6,"integrity":"sha512-QqDSxdAXfgSDtrRe8BfC7Bz2C6win0AkkUU+CT7jmH/WHPMG7D6xGtXYLTGit6rUq1HrJUXXtEUmBu1YKRHKYg==","signatures":[{"sig":"MEUCIA7vur7X961btldHQMOlqMe8A3BQDrhS41e/Uuo4vrlTAiEAupCqOTzqOCztC6VsrW+YM7JVEQYg68iF9ChmqA0xqS0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22854,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdLJ1qCRA9TVsSAnZWagAA5L8QAJlmPMjrGtmKa+j+4vU9\nv8QCVKKina1Z/qAPGsAr/nXHQ6Af4qsCHVsc+UQ5mLUimubt9vrMPRD+Rz04\nBUqLwTuHLnw3NOShJae2i+W/ndtppY3QsMDI0NCX2E5ad1ONbbrzsiZxzhgx\n+Dek8V+A943Twx829PtHutXCOI9bLnFFJNPcexVgGlpSU2ca3JAypKcC+fDP\nO6vKJsNtU2x0IbOlU4MJpUX0GNjf3JsoXfspgPI22uwSWXwfYKp4y21j7Q8b\nCpMnkVoEMUwYA4DlXpiKbANZQQD1wcrCClMEMtcuON3itt8kWzg8MlG4La85\n7cUDgXt3iz/Jj+jV1fONNTQFkXOoEAaZzzQL7CFMIMtsvg2USARtxAR4Peuz\n+utlAAvZysfxxQO9t0j4oqZ1L1xLOIkhyR4BMDZ49tGcR+JCWikQqKb9DN3Z\ns4g4OirGWmZ6hLwAtRawMd/nAafH88gFhbtr6KBG7aQlGaY8LmU3zfNiY7Gp\nfoe/rmftOaBP4R2w4kzRAVZ9obt+UdkJaS5fw1ooOMkQHAXjM74814LLKLYA\nU9qXHEWSIk+H/AYJ6hQGHWGOrF2vNcPLiqROZvmammUs1NtT8E+/pCrRmSun\nizq2mlnUO2qaDtg6rZ19p7/QJt2rVsnr9iYunWrcGXcXKhekUcULdtGcQhkA\na2Yj\r\n=O2UI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"## Introduction\n\n[![npm version](https://badge.fury.io/js/@ampproject/toolbox-optimizer-express.svg)](https://badge.fury.io/js/@ampproject/toolbox-optimizer-express)\n\namp-optimizer-express is an [express](http://expressjs.com/) middleware that optimizes page load\ntimes for websites using AMP for their canonical pages. The middleware uses the same\nserver-side-rendering optimizations as the Google AMP Cache.\n\nThe middleware uses the [amp-optimizer](../optimizer) component to apply server-side-rendering on the fly.\n\n## How it works\n\namp-optimizer-express intercepts the responses and replaces their content with a version that has been\ntransformed by [amp-optimizer](../optimizer).\n\nAs the server-side-rendered version of the content is not valid AMP, the component also\nprovides the original content on an alternative URL. Server-side-rendering\ntransformations are not applied to this URL, and the original valid AMP is served.\n\nAn AMPHTML link tag is added to the server-side-rendered version, linking it to the original valid\nAMP version hosted on the alternative URL.\n\nExample:\n\nA valid AMP page is served on `https://example.com/index.html`.\n\nWhen the amp-optimizer-express middleware is used, that URL will serve the server-side-rendered version\nof the content.\n\nThe original, valid AMP will then become available at `https://example.com/index.html?amp`.\n\nAn amphtml link will be added to the server-side-rendered version:\n\n```html\n<link rel=\"amphtml\" href=\"https://example.com/index.html?amp\">\n```\n\n## Usage\n\nInstall via:\n\n```\n$ npm install @ampproject/toolbox-optimizer-express@canary\n```\n\nThe AMP Optimizer Middleware can be used like any other express middleware.\n\nIt is important that the middleware is used *before* the middleware or route that renders the page.\n\nThe example bellow will transform HTML being loaded by express-static:\n\n```javascript\nconst express = require('express');\nconst path = require('path');\nconst app = express();\nconst AmpOptimizerMiddleware = require('@ampproject/toolbox-optimizer-express');\n\n// It's important that the AmpOptimizerMiddleware is added *before* the static middleware.\n// This allows us to replace the parts needed before static handles the request.\napp.use(AmpOptimizerMiddleware.create());\n\nconst staticMiddleware = express.static(path.join(__dirname, '/public'));\napp.use(staticMiddleware);\n```\n\n## Options\n\nThe following options are supported:\n\n   * `runtimeVersion`: true if the optimizer should use versioned runtime imports (default is false).\n   * `ampOnly`: true if the optimizer should only be applied to AMP files (indicated by the lightning bolt in the header).\n\nExample:\n\n```\napp.use(AmpOptimizerMiddleware.create({\n  runtimeVersion: true\n});\n```\n\n## Best Practice: Cache server-side-rendered AMPs\n\nTo achieve best performance, those transformations shouldn't be applied for\nevery request. Instead, transformations should only be applied the *first time*\na page is requested, and the results then cached. Caching can happen on the CDN\nlevel, on the site's internal infrastructure (e.g.: Memcached), or even on the\nserver itself, if the set of pages is small enough to fit in memory.\n","gitHead":"630677e390bf5f63f82f4d2c6a0c53a20c33bc2e","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git"},"_npmVersion":"lerna/3.15.0/node@v10.16.0+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"10.16.0","dependencies":{"mime-types":"2.1.24","whatwg-url":"7.0.0","@ampproject/toolbox-core":"^1.0.0-beta.5","@ampproject/toolbox-optimizer":"^1.0.0-beta.5","@ampproject/toolbox-runtime-version":"^1.0.0-beta.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_1.0.0-beta.5_1563204970270_0.3354522742335193","host":"s3://npm-registry-packages"}},"1.0.0-beta.6":{"name":"@ampproject/toolbox-optimizer-express","version":"1.0.0-beta.6","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@1.0.0-beta.6","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"sepandparhami","email":"sparhami@google.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"ecf327c9761f0d9c40c911e78f091d54521909cb","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-1.0.0-beta.6.tgz","fileCount":5,"integrity":"sha512-1PCFz3CG+MjWoxArfvxMSjmUEmOJ25nwiOlu9/J2eZTkLUNOnlFJGbcFh3l5x64DvoztLQ1R889mOza+UKskCg==","signatures":[{"sig":"MEQCIFh+4Sv0ydlpHmoSSDK5c2Tp2COaYCBVigoGxhcaw3jWAiACksiEY/9thoPKbritAGEo/uGj0fLVlDZGDLucSR/2zA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11511,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdNwViCRA9TVsSAnZWagAATB4P/37VPiIFLOwUJmreyAMK\nLNy4o/3mb/B9EMSLwmT6EwOwDAFpIK1aXYo8ccdt2ZzG35sQJ09/xVT+UWlP\n4KXcbVOn9op7CONUgWBsZUvQgbzcWu+rf8xZCmEox+ubrUyJdj2mJRwHfKaB\nxs6eMiizHCVltMBiGb/W18YE31lP5v+78v3S2whbBTmM6knQIsTmzdDPxoJX\nIRL3ujfCHXIBTTUCRSnX47t4yi7SCC9g8qSUJDIwOqu3o0AcT/q41+QzWbsp\n6/hx3qSQtveqXuqdqme3Hqu0qx576vyF6SnXQD+z+N9jnPc0wf3dfuWHDgTz\nVNGhNF5g1ZUDQ26vXLDAR85ObEy3EIcOOMm7ECPhR6wvhDwMS+/QwXbyRvYg\neSkJI5Ttz1Xne+wqxKzEpVB7SbN8RNUAW6JG6ZW3jLnIMfDzQ/2AF7qPbKu3\nKzrBy7WfU1r9yF0Yyrhc5W6bubpeDLWCKCXyg6sm5KnpX+i+2VuSNaCLIzbA\nHys+tn2MpQfa16Ca/WI9Oqdl59NK2MVbUByY+1nNGsYlTbgEnefOZsLsnO6U\nGuLNwB9hoGiv08oWyW2UJevUU26d12j/1ozCnTpkzxCxYqwrJ9ycuNGBSROq\nSy8/42v610O9E08kEK4/GAc38jz1WSESwyfE8sUTuulobvuqlO16/Sg+DSn/\niZPV\r\n=4c+Y\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"## Introduction\n\n[![npm version](https://badge.fury.io/js/@ampproject/toolbox-optimizer-express.svg)](https://badge.fury.io/js/@ampproject/toolbox-optimizer-express)\n\namp-optimizer-express is an [express](http://expressjs.com/) middleware that optimizes page load\ntimes for websites using AMP for their canonical pages. The middleware uses the same\nserver-side-rendering optimizations as the Google AMP Cache.\n\nThe middleware uses the [amp-optimizer](../optimizer) component to apply server-side-rendering on the fly.\n\n## How it works\n\namp-optimizer-express intercepts the responses and replaces their content with a version that has been\ntransformed by [amp-optimizer](../optimizer).\n\nAs the server-side-rendered version of the content is not valid AMP, the component also\nprovides the original content on an alternative URL. Server-side-rendering\ntransformations are not applied to this URL, and the original valid AMP is served.\n\nAn AMPHTML link tag is added to the server-side-rendered version, linking it to the original valid\nAMP version hosted on the alternative URL.\n\nExample:\n\nA valid AMP page is served on `https://example.com/index.html`.\n\nWhen the amp-optimizer-express middleware is used, that URL will serve the server-side-rendered version\nof the content.\n\nThe original, valid AMP will then become available at `https://example.com/index.html?amp`.\n\nAn amphtml link will be added to the server-side-rendered version:\n\n```html\n<link rel=\"amphtml\" href=\"https://example.com/index.html?amp\">\n```\n\n## Usage\n\nInstall via:\n\n```\n$ npm install @ampproject/toolbox-optimizer-express@canary\n```\n\nThe AMP Optimizer Middleware can be used like any other express middleware.\n\nIt is important that the middleware is used *before* the middleware or route that renders the page.\n\nThe example bellow will transform HTML being loaded by express-static:\n\n```javascript\nconst express = require('express');\nconst path = require('path');\nconst app = express();\nconst AmpOptimizerMiddleware = require('@ampproject/toolbox-optimizer-express');\n\n// It's important that the AmpOptimizerMiddleware is added *before* the static middleware.\n// This allows us to replace the parts needed before static handles the request.\napp.use(AmpOptimizerMiddleware.create());\n\nconst staticMiddleware = express.static(path.join(__dirname, '/public'));\napp.use(staticMiddleware);\n```\n\n## Options\n\nThe following options are supported:\n\n   * `runtimeVersion`: true if the optimizer should use versioned runtime imports (default is false).\n   * `ampOnly`: true if the optimizer should only be applied to AMP files (indicated by the lightning bolt in the header).\n\nExample:\n\n```\napp.use(AmpOptimizerMiddleware.create({\n  runtimeVersion: true\n});\n```\n\n## Best Practice: Cache server-side-rendered AMPs\n\nTo achieve best performance, those transformations shouldn't be applied for\nevery request. Instead, transformations should only be applied the *first time*\na page is requested, and the results then cached. Caching can happen on the CDN\nlevel, on the site's internal infrastructure (e.g.: Memcached), or even on the\nserver itself, if the set of pages is small enough to fit in memory.\n","gitHead":"4c1963ce6f32ce607ce3925653ab38db250e79c3","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git"},"_npmVersion":"6.9.0","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"10.16.0","dependencies":{"mime-types":"2.1.24","whatwg-url":"7.0.0","@ampproject/toolbox-core":"^1.0.0-beta.6","@ampproject/toolbox-optimizer":"^1.0.0-beta.6","@ampproject/toolbox-runtime-version":"^1.0.0-beta.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_1.0.0-beta.6_1563886945276_0.771005190237191","host":"s3://npm-registry-packages"}},"1.0.0-beta.7":{"name":"@ampproject/toolbox-optimizer-express","version":"1.0.0-beta.7","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@1.0.0-beta.7","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"sepandparhami","email":"sparhami@google.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"458604857b6b6a10b5a2ea60dada17c71c060e9a","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-1.0.0-beta.7.tgz","fileCount":6,"integrity":"sha512-CeuO2QoKvB0KuH/mPX8TPhsNVKW/VHvVD0BHGXyjcOuJ+gl3S6yszZAnQaHF7mHILBaMLYwMdAzuIgdJUz5UXQ==","signatures":[{"sig":"MEQCIGmqb0bEbpp2Lr6luGrfdxEMo0dqe16wlUt7I2hC87/0AiAKKMHD3XfJjrl3/Vid+kw3ScX0V/it6aZpOu2voGOXqg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22854,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdOGJuCRA9TVsSAnZWagAAxiUP/39mPajjvn74pzILzSEP\n08Kff08igh+AaJS+4NKbnJ2QllyR8eTBzqGkEdGFOrleAkLzbc9A1jacd9af\npKaShobiMoBuqpZ9QIfbuaxyDihVqk3S2acvBIw8Qp3cuPrfndFVDriNqvyw\nvnM2/FvQp0TV3Otw6DAoyteHYG4TuYyGAhok3EDr3ERcL1UvxGygay4cUsyo\nJv4Obeb8amCEjMbg9nPEX3RrINd1BXwiDFjYGFXUut/ttobxGDZglUy4o1Ej\nT6h1EHIIfx3UoLL/W0RLQ7u9uw/yc9UwLNQSyuScnpqtSJFefGCn4AnbNR+D\ntVr7gMFb9fjS2Tud93fBHRR85B3pKhm6Fjg/YqmL0kfmyfih0owj4umbcvt7\nzmKsmh4tdNH3B99dHX3nwElJXYzhVXyBgsmBL/d8npniuT+fG7CrLAocOSz8\ndgEI70CZZeI5VXgTTud7xEPSNYz47t+WHcNmyginspLM6cwU7jtO+A3yn795\niOxJUMn1wozwgIU3+VnN2vrIqA5J5YsC9gegJQPkqmQTW7BQOr1OfBOKYNFw\nzAntFu1wdyNvhXgc0PM/hrd75eR5Y19GZcMsArDWWSugp3k2R9OBC4mVDiRz\nQLPKIYun6y2yOaCoJO4o7+ZvXPLESpm56GgWIGAKOpnpKDawOP9oRvBdVFEY\niTPV\r\n=CVq7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"## Introduction\n\n[![npm version](https://badge.fury.io/js/@ampproject/toolbox-optimizer-express.svg)](https://badge.fury.io/js/@ampproject/toolbox-optimizer-express)\n\namp-optimizer-express is an [express](http://expressjs.com/) middleware that optimizes page load\ntimes for websites using AMP for their canonical pages. The middleware uses the same\nserver-side-rendering optimizations as the Google AMP Cache.\n\nThe middleware uses the [amp-optimizer](../optimizer) component to apply server-side-rendering on the fly.\n\n## How it works\n\namp-optimizer-express intercepts the responses and replaces their content with a version that has been\ntransformed by [amp-optimizer](../optimizer).\n\nAs the server-side-rendered version of the content is not valid AMP, the component also\nprovides the original content on an alternative URL. Server-side-rendering\ntransformations are not applied to this URL, and the original valid AMP is served.\n\nAn AMPHTML link tag is added to the server-side-rendered version, linking it to the original valid\nAMP version hosted on the alternative URL.\n\nExample:\n\nA valid AMP page is served on `https://example.com/index.html`.\n\nWhen the amp-optimizer-express middleware is used, that URL will serve the server-side-rendered version\nof the content.\n\nThe original, valid AMP will then become available at `https://example.com/index.html?amp`.\n\nAn amphtml link will be added to the server-side-rendered version:\n\n```html\n<link rel=\"amphtml\" href=\"https://example.com/index.html?amp\">\n```\n\n## Usage\n\nInstall via:\n\n```\n$ npm install @ampproject/toolbox-optimizer-express@canary\n```\n\nThe AMP Optimizer Middleware can be used like any other express middleware.\n\nIt is important that the middleware is used *before* the middleware or route that renders the page.\n\nThe example bellow will transform HTML being loaded by express-static:\n\n```javascript\nconst express = require('express');\nconst path = require('path');\nconst app = express();\nconst AmpOptimizerMiddleware = require('@ampproject/toolbox-optimizer-express');\n\n// It's important that the AmpOptimizerMiddleware is added *before* the static middleware.\n// This allows us to replace the parts needed before static handles the request.\napp.use(AmpOptimizerMiddleware.create());\n\nconst staticMiddleware = express.static(path.join(__dirname, '/public'));\napp.use(staticMiddleware);\n```\n\n## Options\n\nThe following options are supported:\n\n   * `runtimeVersion`: true if the optimizer should use versioned runtime imports (default is false).\n   * `ampOnly`: true if the optimizer should only be applied to AMP files (indicated by the lightning bolt in the header).\n\nExample:\n\n```\napp.use(AmpOptimizerMiddleware.create({\n  runtimeVersion: true\n});\n```\n\n## Best Practice: Cache server-side-rendered AMPs\n\nTo achieve best performance, those transformations shouldn't be applied for\nevery request. Instead, transformations should only be applied the *first time*\na page is requested, and the results then cached. Caching can happen on the CDN\nlevel, on the site's internal infrastructure (e.g.: Memcached), or even on the\nserver itself, if the set of pages is small enough to fit in memory.\n","gitHead":"386bd4636da2dfd92569a6f0c0ede7bd2b49580c","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git"},"_npmVersion":"lerna/3.16.0/node@v10.16.0+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"10.16.0","dependencies":{"mime-types":"2.1.24","whatwg-url":"7.0.0","@ampproject/toolbox-core":"^1.0.0-beta.7","@ampproject/toolbox-optimizer":"^1.0.0-beta.7","@ampproject/toolbox-runtime-version":"^1.0.0-beta.7"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_1.0.0-beta.7_1563976302024_0.022731116121302852","host":"s3://npm-registry-packages"}},"1.0.0-beta.8":{"name":"@ampproject/toolbox-optimizer-express","version":"1.0.0-beta.8","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@1.0.0-beta.8","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"sepandparhami","email":"sparhami@google.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"15642948e68491e958c82f4c236796e68b90fef9","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-1.0.0-beta.8.tgz","fileCount":6,"integrity":"sha512-XVaYMbGq9wbj+3ly/MwyulSU72TueCrcRiN7AVZ8oIONecAKct7YCKrMpFPIKNmFDMBNv0BSbMMH5TAIC9atUg==","signatures":[{"sig":"MEUCIBCw9RuXx1g9+/GoNYf2SGgKb72Vmp//0GKxnXg78ks+AiEA4SJaI3wI5RXgKzVQZ87LDkY9yFfwVQt7Pxwp+N82eTg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22854,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdQqw4CRA9TVsSAnZWagAAKGoQAIielQkTyquO84CqV+J4\nwwEdRg4ykmg49BiMnNtTJkEl4j8WeietJs3gCPe3Go9jJl2VCjJTkuNwYWBV\n1gz+lCdXc4eMrxjtHMBLRQzIBRM8oarkKlW+PVKDD1CBBEFf157+bO9TAWab\nOjvJOm7MS5eNn9G2EGG/sKKxMocxMNRgCU5tfOMSiY4qjJY4KxeFrI0H9p8N\nwJ+gPcdnqswVjVbYqxn347j1+Xc2kpG1pdhCNKfvUvQchnVdmFFBrb1K5qg3\nGtjILItyuW0MDqXcw+QsxFz7TXGJz7dtsr7AqjUtjLeaPMVjbTyfKdKBSWNZ\nG1m2XniZpuq9O+ZVtWQdJ2X+ZlXFA9XOevXE7E58VGazt97kzDDsu/8PnOkg\nlfBBtAIib208OfTdOnqFvUhGmG3pll5eIZN7sEXYVzGnv45b1r9Fjd+03BFq\n4mte8Injd+aI39D7x0cDpmKqoxmPH0yJvfRY5QXRy7GPuF9Ps37scVaDkfJl\n1rfub4HPfi7fK9KTePnwWyEnCTdSWr9HPgCRAGKDyvVq7L/VD/pu7a01VU/A\npY99ypuTn0fHQuwpNopJJmS3xwIpO4aWGesWP7E6rqTDPmzaOX3QMf2xv9Q1\nXUekJsOmOxejZ3RTz/IJagc+XbO3C3ON5qb3o7/dD3CFsYHtnQXBd2Zmj21R\nXUHZ\r\n=QUWk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"## Introduction\n\n[![npm version](https://badge.fury.io/js/@ampproject/toolbox-optimizer-express.svg)](https://badge.fury.io/js/@ampproject/toolbox-optimizer-express)\n\namp-optimizer-express is an [express](http://expressjs.com/) middleware that optimizes page load\ntimes for websites using AMP for their canonical pages. The middleware uses the same\nserver-side-rendering optimizations as the Google AMP Cache.\n\nThe middleware uses the [amp-optimizer](../optimizer) component to apply server-side-rendering on the fly.\n\n## How it works\n\namp-optimizer-express intercepts the responses and replaces their content with a version that has been\ntransformed by [amp-optimizer](../optimizer).\n\nAs the server-side-rendered version of the content is not valid AMP, the component also\nprovides the original content on an alternative URL. Server-side-rendering\ntransformations are not applied to this URL, and the original valid AMP is served.\n\nAn AMPHTML link tag is added to the server-side-rendered version, linking it to the original valid\nAMP version hosted on the alternative URL.\n\nExample:\n\nA valid AMP page is served on `https://example.com/index.html`.\n\nWhen the amp-optimizer-express middleware is used, that URL will serve the server-side-rendered version\nof the content.\n\nThe original, valid AMP will then become available at `https://example.com/index.html?amp`.\n\nAn amphtml link will be added to the server-side-rendered version:\n\n```html\n<link rel=\"amphtml\" href=\"https://example.com/index.html?amp\">\n```\n\n## Usage\n\nInstall via:\n\n```\n$ npm install @ampproject/toolbox-optimizer-express@canary\n```\n\nThe AMP Optimizer Middleware can be used like any other express middleware.\n\nIt is important that the middleware is used *before* the middleware or route that renders the page.\n\nThe example bellow will transform HTML being loaded by express-static:\n\n```javascript\nconst express = require('express');\nconst path = require('path');\nconst app = express();\nconst AmpOptimizerMiddleware = require('@ampproject/toolbox-optimizer-express');\n\n// It's important that the AmpOptimizerMiddleware is added *before* the static middleware.\n// This allows us to replace the parts needed before static handles the request.\napp.use(AmpOptimizerMiddleware.create());\n\nconst staticMiddleware = express.static(path.join(__dirname, '/public'));\napp.use(staticMiddleware);\n```\n\n## Options\n\nThe following options are supported:\n\n   * `runtimeVersion`: true if the optimizer should use versioned runtime imports (default is false).\n   * `ampOnly`: true if the optimizer should only be applied to AMP files (indicated by the lightning bolt in the header).\n\nExample:\n\n```\napp.use(AmpOptimizerMiddleware.create({\n  runtimeVersion: true\n});\n```\n\n## Best Practice: Cache server-side-rendered AMPs\n\nTo achieve best performance, those transformations shouldn't be applied for\nevery request. Instead, transformations should only be applied the *first time*\na page is requested, and the results then cached. Caching can happen on the CDN\nlevel, on the site's internal infrastructure (e.g.: Memcached), or even on the\nserver itself, if the set of pages is small enough to fit in memory.\n","gitHead":"6f291b4f9b0a00a24e3af763c918a2b70d47bb5e","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v10.16.0+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"10.16.0","dependencies":{"mime-types":"2.1.24","whatwg-url":"7.0.0","@ampproject/toolbox-core":"^1.0.0-beta.8","@ampproject/toolbox-optimizer":"^1.0.0-beta.8","@ampproject/toolbox-runtime-version":"^1.0.0-beta.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_1.0.0-beta.8_1564650552292_0.04984767764914744","host":"s3://npm-registry-packages"}},"1.0.0-beta.9":{"name":"@ampproject/toolbox-optimizer-express","version":"1.0.0-beta.9","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@1.0.0-beta.9","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"sepandparhami","email":"sparhami@google.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"7421598d17ec87bfea94283663e96b2868497dcb","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-1.0.0-beta.9.tgz","fileCount":6,"integrity":"sha512-4/SguAkaQGzz33UW5Bx6bFvkCj19TAbEaHTX9frd+tvgP07mOfTnZCuTY/XRuqeIMpdxVRKxQicVBZUpqNmBjQ==","signatures":[{"sig":"MEYCIQDxn5ZhNU3upOuaNgkVa+kdv0ARaJYrTclry+tTQUxVjwIhANatLxqWdZBOVVmySPiaotRU/JAL54UNzS3s5Z2sOK1B","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22854,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdQq3SCRA9TVsSAnZWagAAv1AP/jI971bCGqE0QFCmExGN\n52smIxrQhdwgyaMYYzIFUDZkUjnWOQLnWpIFX/O2c+OuczhiQVCNbBIxZgCW\njA1GxkAgb0DDVnxdDL5eGeKudgFum0l3Gi66uQtygw0FOmqF7VfwWreSNgei\njkeGs2eCpwB1xLevTuoZacgsExPuEYrqVP820/j1TlJ0hzQfo53D3SA7Jpwu\nFKzGu28V5vyqykgbcxCZTesKgDxU4RxXFIKYf2vkPx5V4T8pATSPoehirV5R\nyPzq8M7l05gqXUoTgTZrXRrNtxh0wGpJfq0QOD6WObvHYdKYj7t0i5t8JJ09\nswoAAkdE5rtkgjPtFOMSW+EnEW+OHj5DI8gjpyVsrI1t3TLRhjGgTKjLoUXt\nR2cT4OqVdwBq5xv2JUEECN1f8VA8WwTT2CmQD5hm+mcHYZOsaEWnakJ5+8wb\n2JOhWr0h2u3SUDjy4fxvBHn4SS58nzy0KeRKx983HYlkJ5PCYkrWRAnf4eXf\nWEF68/+4oH5m8+SwcUDD22q0MYasuyqea8v38iYvMGbFngJUnYEAwaI1NHPv\nCQp3v5dvu6w95ueYOciqwZNZdd4QPcCe3eU8TguXlBq9D+FPbQG1tGHBcilc\nWSoOsW735WoXpYVM5NoqYmCrqvhvg0tkHIA+lmU3OyeOzJvuWhQsR0YJAy8X\n48v5\r\n=75Cf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"## Introduction\n\n[![npm version](https://badge.fury.io/js/@ampproject/toolbox-optimizer-express.svg)](https://badge.fury.io/js/@ampproject/toolbox-optimizer-express)\n\namp-optimizer-express is an [express](http://expressjs.com/) middleware that optimizes page load\ntimes for websites using AMP for their canonical pages. The middleware uses the same\nserver-side-rendering optimizations as the Google AMP Cache.\n\nThe middleware uses the [amp-optimizer](../optimizer) component to apply server-side-rendering on the fly.\n\n## How it works\n\namp-optimizer-express intercepts the responses and replaces their content with a version that has been\ntransformed by [amp-optimizer](../optimizer).\n\nAs the server-side-rendered version of the content is not valid AMP, the component also\nprovides the original content on an alternative URL. Server-side-rendering\ntransformations are not applied to this URL, and the original valid AMP is served.\n\nAn AMPHTML link tag is added to the server-side-rendered version, linking it to the original valid\nAMP version hosted on the alternative URL.\n\nExample:\n\nA valid AMP page is served on `https://example.com/index.html`.\n\nWhen the amp-optimizer-express middleware is used, that URL will serve the server-side-rendered version\nof the content.\n\nThe original, valid AMP will then become available at `https://example.com/index.html?amp`.\n\nAn amphtml link will be added to the server-side-rendered version:\n\n```html\n<link rel=\"amphtml\" href=\"https://example.com/index.html?amp\">\n```\n\n## Usage\n\nInstall via:\n\n```\n$ npm install @ampproject/toolbox-optimizer-express@canary\n```\n\nThe AMP Optimizer Middleware can be used like any other express middleware.\n\nIt is important that the middleware is used *before* the middleware or route that renders the page.\n\nThe example bellow will transform HTML being loaded by express-static:\n\n```javascript\nconst express = require('express');\nconst path = require('path');\nconst app = express();\nconst AmpOptimizerMiddleware = require('@ampproject/toolbox-optimizer-express');\n\n// It's important that the AmpOptimizerMiddleware is added *before* the static middleware.\n// This allows us to replace the parts needed before static handles the request.\napp.use(AmpOptimizerMiddleware.create());\n\nconst staticMiddleware = express.static(path.join(__dirname, '/public'));\napp.use(staticMiddleware);\n```\n\n## Options\n\nThe following options are supported:\n\n   * `runtimeVersion`: true if the optimizer should use versioned runtime imports (default is false).\n   * `ampOnly`: true if the optimizer should only be applied to AMP files (indicated by the lightning bolt in the header).\n\nExample:\n\n```\napp.use(AmpOptimizerMiddleware.create({\n  runtimeVersion: true\n});\n```\n\n## Best Practice: Cache server-side-rendered AMPs\n\nTo achieve best performance, those transformations shouldn't be applied for\nevery request. Instead, transformations should only be applied the *first time*\na page is requested, and the results then cached. Caching can happen on the CDN\nlevel, on the site's internal infrastructure (e.g.: Memcached), or even on the\nserver itself, if the set of pages is small enough to fit in memory.\n","gitHead":"2b6eaa91c3654fc1523f7fc2ff93b37579b52869","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v10.16.0+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"10.16.0","dependencies":{"mime-types":"2.1.24","whatwg-url":"7.0.0","@ampproject/toolbox-core":"^1.0.0-beta.9","@ampproject/toolbox-optimizer":"^1.0.0-beta.9","@ampproject/toolbox-runtime-version":"^1.0.0-beta.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_1.0.0-beta.9_1564650962500_0.5579296438093833","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"@ampproject/toolbox-optimizer-express","version":"1.0.0","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@1.0.0","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"sepandparhami","email":"sparhami@google.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"e31c0be9ac2f8ad95563cecbe1fc327a53329871","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-1.0.0.tgz","fileCount":6,"integrity":"sha512-Pqd89Ul8R3nIJZY0Fo8zd1mrg7g8rk8ENWucF2zj8SnPn4iyDkI+FgZHDWVm8MNlbGZcv3wcpWW5I2beIArFCA==","signatures":[{"sig":"MEYCIQCGjAwRdfqKfx6i/TJZBMZP+z1Pabe3Gqp2rM1eDLwQaQIhAIsYDp/i3a2PZbkDBT+kcFMzDyPkq+deo2N+kewHQLmF","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22819,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdSdxMCRA9TVsSAnZWagAABkwP/jHJ+pqoAVCycD5FP324\naqOR5fzoN1+tp16sO0bspxgk0OSRRxrC/zDLA8TW8RfiIiFbv1AMFuC2xCZk\ntRHLFX9dPWUN5xUibnJ2a/gjyb/AICiDF0yhDieYYbnfMExoO1Aj4FVRrRQY\nhmZmjppcrTO0vhSyGxkfB5Bxh96LuLbyyguO4+6lBjES1PWRkI+2PX8t4Q9Q\nxpMsLNMucjILwajDQcQsnKpS9LjdiOX27MuFQsVu48YtA9ONHNi8j7mXaHki\nY8VOf7cvBNVSu1b1o3URpcfWiywyg1TXZpvJrW+BCznGi3/pylbD+Yrss3zJ\nHfrLmZ2j++bU2tU5RSY9yfoOHUItSh6ZuXMT4Oaasdq0e/zrIAdMnSRO05Hc\nDaJVCbqTGTbs2vvDssZnDr34VEZnyTTAjsGtrhEp4l7YHrxICkhLZMkPrjlL\n9VyLNgj0IqMrlWOicncDFijPWVvzZt4ovY/PDy9Qa3IXEyIsF++U0zwsK27U\nv39C8nfEPoi62oaZ7Z69Hw2Yjjf6wAYWaDAbjT5XJER37AMhN7A2oQcmb+8U\nb+kw2di4I74OLO7xXohfpDCG1Jcb4w2aR5Q+5GDBcgSYrLQV2ywDLPJJXhce\nEOW70MitgWq2yCrvA65HZktOEAz42vRihnf3qKbDHwac58hkoAmrG6BYJc9i\nEtFn\r\n=MFdY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"cc04a8267a51e57290ca81610ac6854de1aea986","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v10.16.0+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"10.16.0","dependencies":{"mime-types":"2.1.24","whatwg-url":"7.0.0","@ampproject/toolbox-core":"^1.0.0","@ampproject/toolbox-optimizer":"^1.0.0","@ampproject/toolbox-runtime-version":"^1.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_1.0.0_1565121611733_0.8687797433239541","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@ampproject/toolbox-optimizer-express","version":"1.0.1","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@1.0.1","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"sepandparhami","email":"sparhami@google.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"966ceca89bdd73c254b2419d4218fb84aa5b7f0b","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-1.0.1.tgz","fileCount":6,"integrity":"sha512-2MSqKdkze7kMwrTnFxVRdfupRsxACx/p00WhJTR/5thf/Bb+UvwDEydvibSCoqWdtMKrHTQPX2vFjH926kakMQ==","signatures":[{"sig":"MEUCIAifr2EBh3JGmLqPZSVDQFun/2Ejyy7D1bw50veiFK9sAiEApCjRrQWQwK4QJLK6b6xWCO8cTrRWLSBKH8p6Yc8+br8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22819,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdSd7nCRA9TVsSAnZWagAAQtUQAKI+EuNDA6wFmMPIzrvn\nrW3kAd3/wGo1Zo5F2T93jKrpJ1OO73E96eAp9BVkr++aEpd4BJwPwrJitXCU\ng1wqZHXFHz9EnNwMOS1qVSPMILTnsmbw3UWB4umk8lPHoGtn+k14l0602lC9\njiHW9axvIZ0p6vNTDRlXUaqXbcMvLXXvE7DkFF6tAZHHUAKNJyJm132ADhS1\nFSRg3Dpo4+dsNqTfFYqnZKJnVjkZf1T7kM8qydb67R5EesYY/k+npwBiWu2Z\nUVCdzWKcA3HBJfsH4Ow33t46xAApUr6YF/lnFWHkMwT2xQWq3SIAYNaLg/lo\n4mXeZFsPCzHnFeGzH2ATCEhGOLtMiHbEa1SHna3qArYdG+TjrmbmADxWnyUK\nQAv2MKf1itNrczgycwH2mx4t0QqCK0mT1v6Q31OCTJ7c/qtA3aQoqDqxrBhx\nZUZtc0uGHBqA+iGbg+abmxuRFqdf2Dk6RsbcmQ1ZyfkxalQltYh0D5w8ZUJC\naoDJkN4Xjk2d3l4JkgTaMbnIHZVq6ghCrjlf8Zat0glJIqmiujkIPyvbtgbh\n+dxKd2j7w9N5uGgzvFi0Q+UHpfbjrOowwdiw6tSlUdCvNas6jdbfo3AVIIzk\nuPdYdsxi7zpntqRrzf1UqLlbN7NNOXIa7kdNmRIowaacHYooxMhDAtjWq36K\nTG+V\r\n=U2Q4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"4da05d4a419241bbcc8157553022af3a84676e9a","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v10.16.0+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"10.16.0","dependencies":{"mime-types":"2.1.24","whatwg-url":"7.0.0","@ampproject/toolbox-core":"^1.0.1","@ampproject/toolbox-optimizer":"^1.0.1","@ampproject/toolbox-runtime-version":"^1.0.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_1.0.1_1565122278930_0.9383509201498454","host":"s3://npm-registry-packages"}},"1.1.0-beta.0":{"name":"@ampproject/toolbox-optimizer-express","version":"1.1.0-beta.0","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@1.1.0-beta.0","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"sepandparhami","email":"sparhami@google.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"860a0fd1b02536b30533fe75a697053a0f34a089","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-1.1.0-beta.0.tgz","fileCount":5,"integrity":"sha512-ePGhBd7sMgEzDmy59qf6WKHFLEobCPP60JBk2wCgGe8+S6KNgz4mKNNPmu48uX5EaxGqub/MOkeq+Bjl815qmw==","signatures":[{"sig":"MEYCIQDSmQ28HyVDzZebv1BUTzYAfZV+mPlqyglx2WSRN+2P8AIhAK/FXA3xHPAmeXApEdLUBvoTkhllDSB0acJPmfs71kFd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11512,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdaDVGCRA9TVsSAnZWagAAXNIP/3aT0gRU9HwCQOZ5U0+F\n6WzhvlwowpHLL6Mas78S3zs0Mn/Whc5Pc9vH5aOpqW9E4LIFnPeseNuTEo0x\n6S4og3PEEBHp6o94Exdm8Ebv5gbxW079GZfuew85G0L79k06fUaDGbw+Way7\nZGgFlAOQP50Tfaeq/2u4x5NvQue7/S5UfZipmX1O1GyHTzGFPQk1kBMVnuNl\n9CB4amsj/lGUXuf7lVVSxA5kSVsWXiJL92VIED0UIH8kQNfdCXjcGOIKoGda\nBX+ZiDBMcWWJXrEOzQAqWde4MBadf/bsHgoE9lDlJtHEN8CBlC1cYhjExFzl\n2SPxU/Ixnn1b3Zkutc/YP3wRqevU/zL5OWrDJCD+7wTBuYYNNLCVFNYlXB8W\nguX+K4x9CP5xIyPk64RtVV47Z5i2fdKFMyYIFT8MPTnfDyZnaGIPAxAPU1+q\nYoq1HYtXCh0+ajqrfIZ0N2mEa65Idt+UpbhFEGvnCQh8ZG2Gu6I4EXr6bnCx\ncLqb4DHMKVCdiKZ7SAkaRYo1+lIEwJ0FYcYeUPNC9Hz9on2R3D/60ThkFdZN\nicWDF2B/eC8m5NdeKsl1uUa8XY96RB2LODnPBrYfZoy/zpOFMC2Lc9JLjVPg\nN2REDi/pQIg2EBR1WY9zD5iLEYLiwBHofAUY5nAZy7yxjGeWJKbD81VcjEx8\nXI69\r\n=q5ta\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"## Introduction\n\n[![npm version](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express.svg)](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express)\n\namp-optimizer-express is an [express](http://expressjs.com/) middleware that optimizes page load\ntimes for websites using AMP for their canonical pages. The middleware uses the same\nserver-side-rendering optimizations as the Google AMP Cache.\n\nThe middleware uses the [amp-optimizer](../optimizer) component to apply server-side-rendering on the fly.\n\n## How it works\n\namp-optimizer-express intercepts the responses and replaces their content with a version that has been\ntransformed by [amp-optimizer](../optimizer).\n\nAs the server-side-rendered version of the content is not valid AMP, the component also\nprovides the original content on an alternative URL. Server-side-rendering\ntransformations are not applied to this URL, and the original valid AMP is served.\n\nAn AMPHTML link tag is added to the server-side-rendered version, linking it to the original valid\nAMP version hosted on the alternative URL.\n\nExample:\n\nA valid AMP page is served on `https://example.com/index.html`.\n\nWhen the amp-optimizer-express middleware is used, that URL will serve the server-side-rendered version\nof the content.\n\nThe original, valid AMP will then become available at `https://example.com/index.html?amp`.\n\nAn amphtml link will be added to the server-side-rendered version:\n\n```html\n<link rel=\"amphtml\" href=\"https://example.com/index.html?amp\">\n```\n\n## Usage\n\nInstall via:\n\n```\n$ npm install @ampproject/toolbox-optimizer-express\n```\n\nThe AMP Optimizer Middleware can be used like any other express middleware.\n\nIt is important that the middleware is used *before* the middleware or route that renders the page.\n\nThe example bellow will transform HTML being loaded by express-static:\n\n```javascript\nconst express = require('express');\nconst path = require('path');\nconst app = express();\nconst AmpOptimizerMiddleware = require('@ampproject/toolbox-optimizer-express');\n\n// It's important that the AmpOptimizerMiddleware is added *before* the static middleware.\n// This allows us to replace the parts needed before static handles the request.\napp.use(AmpOptimizerMiddleware.create());\n\nconst staticMiddleware = express.static(path.join(__dirname, '/public'));\napp.use(staticMiddleware);\n```\n\n## Options\n\nThe following options are supported:\n\n   * `runtimeVersion`: true if the optimizer should use versioned runtime imports (default is false).\n   * `ampOnly`: true if the optimizer should only be applied to AMP files (indicated by the lightning bolt in the header).\n\nExample:\n\n```\napp.use(AmpOptimizerMiddleware.create({\n  runtimeVersion: true\n});\n```\n\n## Best Practice: Cache server-side-rendered AMPs\n\nTo achieve best performance, those transformations shouldn't be applied for\nevery request. Instead, transformations should only be applied the *first time*\na page is requested, and the results then cached. Caching can happen on the CDN\nlevel, on the site's internal infrastructure (e.g.: Memcached), or even on the\nserver itself, if the set of pages is small enough to fit in memory.\n","gitHead":"cc04a8267a51e57290ca81610ac6854de1aea986","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git"},"_npmVersion":"6.11.2","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"10.16.3","dependencies":{"mime-types":"2.1.24","whatwg-url":"7.0.0","@ampproject/toolbox-core":"^1.1.0-beta.0","@ampproject/toolbox-optimizer":"^1.1.0-beta.0","@ampproject/toolbox-runtime-version":"^1.1.0-beta.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_1.1.0-beta.0_1567110470038_0.025940165759939404","host":"s3://npm-registry-packages"}},"1.1.0-beta.1":{"name":"@ampproject/toolbox-optimizer-express","version":"1.1.0-beta.1","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@1.1.0-beta.1","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"sepandparhami","email":"sparhami@google.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"da273b56d4a766295b862d87cbfe4c5c6124813c","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-1.1.0-beta.1.tgz","fileCount":6,"integrity":"sha512-w57s42p2FWBN3A7W5LBOv1VxsqziD8IqZm+2v2BshGXAkBJyigd1J+TI9kp7lawbtXlgHv7VD2aOUX+qp8OqaQ==","signatures":[{"sig":"MEYCIQC1w/xvjP6GU9pWCJQDtinNloc/61b/rR+xOZ8fp/HTIgIhANOQS4oKmyo/TUiolwLMo5Tg5+d9/AIBUaFpWwnZgGOg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22855,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdg9UNCRA9TVsSAnZWagAAL8EP/2RFqxpY7yUZdSfXuHGl\nwh3UrS2ufMSLPj0buTajHW0BDojUlfVZYqurAimwBNlXxiYA+c4V59GUeHI/\nc6BGinjt2lvfkwfL1dDw89FyXKH9L9T2j8zssErBfz/vPeSki/xB31T0HQas\nW4+T+itHGwq09EmqkJBwwm0Bw/FWkEFMCCVu4RDG8MtO+wyiy/IiytxO5RTX\n03VPcRUAjjnr/kPGwBXdGMccZAxTBv2PvGrT/WUbxXmTABybgUCF6pw5r1uN\nEJDhmDdMJ6LfAazKCgYseSsNA9rXk3twOBp7umqDa4CxOAaNZtVOXvBHrpP8\nY7aTqX7pdZTi6uMnOSldSsnacwB3aj2T0Jvwqp6jFd/nGYvc4+SwPiDYIkDX\nGszy04c9o1m/el7BBaBj0JFiCw+fAxiKnEBzkOw7K3r1Aq4M5aFhCpyDw3gY\ncDlsgcfKEgobnN9IlYUaUYxi7tjAo/XITKm4FZM2UTsLdxxRntL2VSt6JF3U\nozzL3MYL6M8HKVg0t+r4VclbAa38rOdkuC+P4ZJw4aG0OVE4XtZYdCqv0TsJ\nfSISnVob6hZ5vv66t1CPkJ6hzGmFVbpe7SEbbj9RI24/ivprDLPLaAZBKY4r\n3ET8vj/KlSSS4h6Gnoo5TeJxdTnQAkRznGIoslne80aPEGmpX73kxBEJUB1j\ngwpq\r\n=15NP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"## Introduction\n\n[![npm version](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express.svg)](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express)\n\namp-optimizer-express is an [express](http://expressjs.com/) middleware that optimizes page load\ntimes for websites using AMP for their canonical pages. The middleware uses the same\nserver-side-rendering optimizations as the Google AMP Cache.\n\nThe middleware uses the [amp-optimizer](../optimizer) component to apply server-side-rendering on the fly.\n\n## How it works\n\namp-optimizer-express intercepts the responses and replaces their content with a version that has been\ntransformed by [amp-optimizer](../optimizer).\n\nAs the server-side-rendered version of the content is not valid AMP, the component also\nprovides the original content on an alternative URL. Server-side-rendering\ntransformations are not applied to this URL, and the original valid AMP is served.\n\nAn AMPHTML link tag is added to the server-side-rendered version, linking it to the original valid\nAMP version hosted on the alternative URL.\n\nExample:\n\nA valid AMP page is served on `https://example.com/index.html`.\n\nWhen the amp-optimizer-express middleware is used, that URL will serve the server-side-rendered version\nof the content.\n\nThe original, valid AMP will then become available at `https://example.com/index.html?amp`.\n\nAn amphtml link will be added to the server-side-rendered version:\n\n```html\n<link rel=\"amphtml\" href=\"https://example.com/index.html?amp\">\n```\n\n## Usage\n\nInstall via:\n\n```\n$ npm install @ampproject/toolbox-optimizer-express\n```\n\nThe AMP Optimizer Middleware can be used like any other express middleware.\n\nIt is important that the middleware is used *before* the middleware or route that renders the page.\n\nThe example bellow will transform HTML being loaded by express-static:\n\n```javascript\nconst express = require('express');\nconst path = require('path');\nconst app = express();\nconst AmpOptimizerMiddleware = require('@ampproject/toolbox-optimizer-express');\n\n// It's important that the AmpOptimizerMiddleware is added *before* the static middleware.\n// This allows us to replace the parts needed before static handles the request.\napp.use(AmpOptimizerMiddleware.create());\n\nconst staticMiddleware = express.static(path.join(__dirname, '/public'));\napp.use(staticMiddleware);\n```\n\n## Options\n\nThe following options are supported:\n\n   * `runtimeVersion`: true if the optimizer should use versioned runtime imports (default is false).\n   * `ampOnly`: true if the optimizer should only be applied to AMP files (indicated by the lightning bolt in the header).\n\nExample:\n\n```\napp.use(AmpOptimizerMiddleware.create({\n  runtimeVersion: true\n});\n```\n\n## Best Practice: Cache server-side-rendered AMPs\n\nTo achieve best performance, those transformations shouldn't be applied for\nevery request. Instead, transformations should only be applied the *first time*\na page is requested, and the results then cached. Caching can happen on the CDN\nlevel, on the site's internal infrastructure (e.g.: Memcached), or even on the\nserver itself, if the set of pages is small enough to fit in memory.\n","gitHead":"b5c4db9bdc2962da78862a181d409f6082b9b3ce","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git"},"_npmVersion":"lerna/3.16.4/node@v10.16.3+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"10.16.3","dependencies":{"mime-types":"2.1.24","whatwg-url":"7.0.0","@ampproject/toolbox-core":"^1.1.0-beta.1","@ampproject/toolbox-optimizer":"^1.1.0-beta.1","@ampproject/toolbox-runtime-version":"^1.1.0-beta.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_1.1.0-beta.1_1568920845389_0.13858151332681246","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@ampproject/toolbox-optimizer-express","version":"1.1.0","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@1.1.0","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"sepandparhami","email":"sparhami@google.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"bec69a2d99134347c3f1ec0a1dbbb0f98a2969da","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-1.1.0.tgz","fileCount":6,"integrity":"sha512-+A3LSaq4eAAGmpJCRlsNEzNpBN7kjXuPKhjH6nz6qKKrt7oLnR6zmLtxFCPZK4eeYsyTP+jjKDJgbE7skd0b3g==","signatures":[{"sig":"MEUCIHlIxQiFqkxQZLCYRS6FKBxo05tRDSD8yYySrPefH96VAiEAxPSuqRE5njZAw6UFT4DeMXyetGAq5A1ovuKk+f8hYq0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22827,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdnJnBCRA9TVsSAnZWagAAJNsP/3r2b5DpbeHwjtkwH+ln\n7+Ow5nrG7h+k6SZzEuPY/FdIX5AiywZOhG1K5I2IA58s4+rk18p3stD0lnm4\nO/k3MdWemrAXPLKDhInNIlbpQXjY5PyfgRJHk3o23+bmT6Jofj0bIWrtFig6\nSOrN0OXsjOG0m5oZxuUw1JwZ4KLraOjn4uEpY6MzhGGe3jA0IYwBWPejbVQa\nCO1K3Jf2DJIstIqEB8/WMeUBTZGJMXaWBGoApEhBSUVO29nL4QkxY6NDlwa2\nJ+VVGhSg5v5TKxMJhAo3TGgK/uMTPR7Xi9iEl2t1vJeFmH4WqsTL0Fa55OtW\nO4TKgsW7CcsWahjxxqZY128+PD2QAPWJIdgYidcExqfcnbSqfWYvS9YGzgPQ\nWo+Xgyz4dZeyvIA/UPHBapP0lTSf6ZDwaJgjdaY5oXiizjd3IQrZJWOhfven\neCNlYDdNzQHI1ddC8a6HYQ9T7tjjVKKqFcScT28/y7Y+WAxtuRpiVr9I+MA2\nINTZgZ0BltO+lBWlSpPeUrDCFqUbJ4d85wjJaAzhiIUp+hkqxaSfCk2ux9re\nje5zxJWMrkKcP1nbh/6xpWsuxwhS8aoyJQdOApzEgL0VwtjbAiyiTB7qeUUH\nghyIclzkc6XBiTJztFWmHp+bDny+DT0QCf6IF3RdnFNOm+/kdTN8DUDJ9y3E\nX/ot\r\n=KlQA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"783938063dde0c32f5a79af4148eec53f26e903f","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git"},"_npmVersion":"lerna/3.16.5/node@v10.16.3+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"10.16.3","dependencies":{"mime-types":"2.1.24","whatwg-url":"7.0.0","@ampproject/toolbox-core":"^1.1.0","@ampproject/toolbox-optimizer":"^1.1.0","@ampproject/toolbox-runtime-version":"^1.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_1.1.0_1570544064715_0.8940522335886387","host":"s3://npm-registry-packages"}},"1.1.1":{"name":"@ampproject/toolbox-optimizer-express","version":"1.1.1","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@1.1.1","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"sepandparhami","email":"sparhami@google.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"eee977a9b3a38b9d61944cb3a55c5e45b3e37fa2","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-1.1.1.tgz","fileCount":6,"integrity":"sha512-xzKAvsPM9y6xtrJfMUezxj2X9KL2JbxaFjI3fapm5uOMBMNKm0BhAaiQ1seoq1pdGdmksLNVe7pLfosWfW12pw==","signatures":[{"sig":"MEQCIC12OZN+cMzYM7P/vhUfGcFw+1ByePs5DItvzT5g3EBmAiAixHAoH35GQw4LBoVu+zZXlIOWtNmSQShiZnUak7Jblw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22827,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdnKCUCRA9TVsSAnZWagAAslsQAIHo7qPl68nwF2RqqqRC\n/7MrqXMoxWHmQMIce3AV5StTwPFnZpX5gmJdoD5ugRhEncwRjF5s+5QNv/NX\nFaeYb1aqKzyhiFIUvu3ElVlUw9lzqVsNsDy7OPjkq6YrQVdin0dka4thlsBO\nU/7XfwhH27eZ18tcshUlK4RCt4wtihb2yIaWNLbSuqy+UD+OZjY1Y0cgRl8A\nEtqkIINlpybbBfOfoRnGqAaWnTe1fWz79VrPIUQNk/H2ichBhPM87OIWByPt\nU1oD+p85ZwYDXPhqV/sfuvwgilQPcbQHhPAmyrVhtc56kkmz1cWe1RExvY5H\njrRz/rdneRm+WGda7+6H/g69sYhct0mXNSj1DogNTygqWb2nv/yblAEa7L/Z\nEIYQ0SgXRWKo7GIo8RBlLwgpr1YjZw/Raz6yQ30NWJYPAW7gejWsklVl+CJY\nYG3XcCLaUdeaBoGTY7Xc09L9qwiGteVXsEseksiIUxF1cRAnwxi7t0r2WTa0\nzT3m9COwobYdLankIHqZT8L+ke2LljISjlGixp/Ht1Q1+JpdfLml54jHeNY2\n6SIB/yibR8rQFw/5qAoN13lLD13tfrF0+OFUrvTTrbeixnTwIrzVOc3Vd0kQ\n+6Sbmf3lwBBaVNihckB+GQ9dy56S0KC+Olagksn6+jJo0QEEqPWp+gODde8d\n8f9z\r\n=6FS8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"6ce20613dba3e66b7722df599f62f35dc6391962","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git"},"_npmVersion":"lerna/3.16.5/node@v10.16.3+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"10.16.3","dependencies":{"mime-types":"2.1.24","whatwg-url":"7.0.0","@ampproject/toolbox-core":"^1.1.1","@ampproject/toolbox-optimizer":"^1.1.1","@ampproject/toolbox-runtime-version":"^1.1.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_1.1.1_1570545811818_0.7318553283176843","host":"s3://npm-registry-packages"}},"1.1.2-alpha.0":{"name":"@ampproject/toolbox-optimizer-express","version":"1.1.2-alpha.0","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@1.1.2-alpha.0","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"sepandparhami","email":"sparhami@google.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"7b7530411ac52aafff37908b323b31bbcb06decb","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-1.1.2-alpha.0.tgz","fileCount":6,"integrity":"sha512-Po4JWOnBE5HAkBChShX5Vexk+ZkjcqdE8/Mbg/cbaIM099txAByGJjtqYz8vkOYl6e5rPpWKrjTaVtAn/n37qw==","signatures":[{"sig":"MEUCIQC6gr/fkyaupk+f3r0KQT2nk4JSf2tJSlyfJuCVpSwzpQIgFnlUHo7iq+QD+x+GSoT05M/Gb7IV2BiJuOBIai0iF/E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22843,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdnjs9CRA9TVsSAnZWagAAVcoP/3YNm5s8x+jy4iQjo1Ub\nVCh+pMl8kH2ukmlO7lNwwirxZ5EGdWxnWh3Fc5I6Ait89guXAt7IeNYkrrer\nLZ5Z7pPTSn46qld48HLVd70X0i5hr14zh/GlezoaUxl8kg4qZZCSVQyO3bey\nmgLJnhgcslmcc3Rz84f9cAuS9bNR7hnfsl/NxBG3fDmcVJeBcXMYYx/t8h/2\nTQ8uDqJq+m+tgs94qXNFq6o/YN4+3sW8H5rgDrijJ4Ops53HNtcbLw+/KNcs\nRLzCfVIlCNZmzls/rgp0KgASa2u0SdufSyTvHO6AYgk2eibGN7J26W9HO0sX\ndIMSjTExvQ0SDtQdcJqGAVxFfT9Q/FaQP1LeI9xSl9YwsUnah4BFl+TsHjN4\ntaH8/wmpkRnt3cbHzv3PwYsnRjy4EcZMVK8ol5CzeqVMj+4Z/NcWEpeUowVI\nAwFBpYfnnjhomrvF/4c3EoRr6W9bXsSK0pr5ibeu7UH0E2BKWuuMPlS9gU+O\n68/6o5XrludYwrQ7NF3kaCJBUb8+OgSwGWUskEgdMmdN61v9T94ewYarDgpN\nxwXe3YqIkekc0OhxmAd4hwYsYhJDKFUVHoCnfNGcpWUWMz7thyYoE5CKouTb\nb5zyMyJDJ3m3dgpAIFZuqn/Cka4twpTa+PIoR7KhbuU2YDjFpKtZo+nogD8C\nTPM+\r\n=JDnq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"9fe174b241a47ace8a888dedfa748d59e7648de2","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git"},"_npmVersion":"lerna/3.16.5/node@v10.16.3+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"10.16.3","dependencies":{"mime-types":"2.1.24","whatwg-url":"7.0.0","@ampproject/toolbox-core":"^1.1.1","@ampproject/toolbox-optimizer":"^1.1.2-alpha.0","@ampproject/toolbox-runtime-version":"^1.1.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_1.1.2-alpha.0_1570650940560_0.4817707286678943","host":"s3://npm-registry-packages"}},"1.1.2":{"name":"@ampproject/toolbox-optimizer-express","version":"1.1.2","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@1.1.2","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"prateekbh","email":"prateek89born@gmail.com"},{"name":"sepandparhami","email":"sparhami@google.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"30404e9cca4fc80a0bfabe5544e796667f9370ec","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-1.1.2.tgz","fileCount":6,"integrity":"sha512-uQmBwnT1yqkm1/+Jrz0pPdLR04krbWwsXSPt4AWAWUQ98fA/LnLpFaLc3cPxX29+h9Nh+nHhiIpTCMgV3TtC/w==","signatures":[{"sig":"MEYCIQC4ApVqnKHCJjH+OvlOzyWe2T6+ydr09u5r4RsNq3PurQIhALdr6g/xXEHZulcH11ruD6jH1c58yZYh/ZCQbrYf5qBc","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22827,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdpcl1CRA9TVsSAnZWagAAp8MP+gMXQxb75r8PyMoZFRr0\nBRj2uav1pLgZaEIEYF3Mo5yvgNQGgSYLG2T/beRExP3fTYiP9adlS/0ClGsA\nnAJqyWhdBIIzDf72eFFXxqKbwZFQvDgrxmMze5SuYtgUA7BkynlVPJ/qqsXp\nOBkafPSwtOORYZ46W0EgIOMJIRWQ8SucZ5GvoL6cD6stBLxLWbq32P18xUHZ\nJdi9TJNVm+qGGclaHXGtiVUnd6FStgzV1YGpdSHfKyyKOZz+UrZhI7Ocy1O4\nzoyFmHLwIM/ipbgwWvURnJQhQpnEXHYTNKMucKRvgpdA/dYA1RLKQ2gk0k+R\n8Z8ltrQKztpZ0tUy0FgSL4rVNmN23JqCLRHSLY8V1qV4czYpfPtFm2TRdQMh\n+S33b0LDxgA5QmhZDmYNYkA0hwua6Fvg8nyEqTCqhujJCPJwNbnaVZ3KLE9s\nDugLLk5Zy2RUrTNRMqwQ+0ewoeGyrphAVxB/1rQ8w/Ul2BFB56vD3kiy3wHs\nnYvU1UgQ6OWzYMfnFMxNq4eHZ0LqjdTenCNWVbugRe8k0q5RpCqVcaRNPJa/\narQAvQApxy5q6cowTIijPYNVirmdS0mt6bZdf4qTRmN0iqoixo/M8C901o1l\nqJdbd3ODwy9txHiRB5JohjAGm1NCeX5TE9UBjUdLZygSzfYb7XevxT+oYxjj\nZR+U\r\n=B41i\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"e914411b6dca30b203875a6be32f2b07fcf385ed","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git"},"_npmVersion":"lerna/3.17.0/node@v10.16.3+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"10.16.3","dependencies":{"mime-types":"2.1.24","whatwg-url":"7.0.0","@ampproject/toolbox-core":"^1.1.1","@ampproject/toolbox-optimizer":"^1.1.2","@ampproject/toolbox-runtime-version":"^1.1.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_1.1.2_1571146101163_0.47649022665559837","host":"s3://npm-registry-packages"}},"2.0.0-alpha.0":{"name":"@ampproject/toolbox-optimizer-express","version":"2.0.0-alpha.0","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.0.0-alpha.0","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"sepandparhami","email":"sparhami@google.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"fb41034b4d66bc9817171804731e80b05444af05","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.0.0-alpha.0.tgz","fileCount":6,"integrity":"sha512-vGjyyLF59BaGMMRkq1YxFJRhbz+6GF0FwSI/diniTZKrY3V5gqIVqoDVTwaWRbz8Lf1jFko0587hIl9DGbXNBg==","signatures":[{"sig":"MEUCIA6WRq7LpPlC/1zUIFEKxfiWHAmnqHSDKr+ZmWrJfwPnAiEA47+gwu0yl8cBLLlifQir5npdCMaiOXwKmNKdc3zhKWg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22906,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeKFyKCRA9TVsSAnZWagAANHoQAJza+s4rY9IwAasEfXL8\nW/28BGvm964sqK6R5bXFFkQtHAIldvEYOZqyHa+LVjmf57SmIF6RrusjxSeQ\nFQ66U6cro8dYz2yJZyQHZppLEHuhIpNIdjSh0jwm/M1sE5mAHerXxKLfEnjS\nU4rRyjNr7ZdIXM/66SfJuFpiOnABkwR5YlIgqj1pnlZSBaowBztIBuNQE3vf\n6p0Hw4+AAiZ+kEhySY8mrgNp5uOVbv+R0G9DLeFI2fmkdj9goNxgWs/gvwhx\n1fnNifxE6/VQfjYenqMmQD521M23cFsfUdpIIIBqQUAef+I8Folc3eYuiesq\nZKh7FI/rnVIQxXCYziIKTftQRwCx34hyP5ua50nc+ofdQ6hk0YpbDPfJwOBl\nIsyf4XQ5MT3b/6AQRA4GQfLPDvFWW8Fc6sAivyqWSish8qMUsJmjdksKhNeK\n2lSL7JPTVI/JCxak9BW0XjUB5u3O7e9LlBewiR6EPKWVPwv+awIxjTE/AWBX\n2rysRBXmukM2dV85J4x7xRHQKHpvC4fnDcFhEKz235QknjDPqGj6yvvMFyip\n/AYHmm+WQDUPkhKpII6q7EO80LRvcYj8l+QnzFkDX3mxOQH6bnaq69B1Drss\nWTNW0uKp4Ek3iVEc0B5KSKunRqLq4DWFAEuD+ahA3JQwkNIacSm0Gz5q0kE6\nxFHN\r\n=+9LT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"6140009b75eaa18afeaccf0a5f1996f490dcebfb","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.20.2/node@v12.14.1+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.14.1","dependencies":{"mime-types":"2.1.26","whatwg-url":"8.0.0","@ampproject/toolbox-core":"^2.0.0-alpha.0","@ampproject/toolbox-optimizer":"^2.0.0-alpha.0","@ampproject/toolbox-runtime-version":"^2.0.0-alpha.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.0.0-alpha.0_1579703433606_0.7745876403371501","host":"s3://npm-registry-packages"}},"2.0.0-alpha.1":{"name":"@ampproject/toolbox-optimizer-express","version":"2.0.0-alpha.1","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.0.0-alpha.1","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"sepandparhami","email":"sparhami@google.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"2bdfa2b715216d877053d009a5f2ccf56f5b162f","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.0.0-alpha.1.tgz","fileCount":6,"integrity":"sha512-JkMrNI5yARrGgr4/CIOD2xV0791W1BPUaLbyRIAWBfLcEPW9+rlaMonk8jAYWx7oaSDE76bLCnbeJbh9fxUaBw==","signatures":[{"sig":"MEQCICpqMpHJ4pxs1ADgKEptOpP9UI712b5T4JSsnC11iwhiAiAVosevv8HEp3Ujm4SJ22/N8Y+XH+uAuJaUIIe2nW7n7Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22906,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeKF/MCRA9TVsSAnZWagAAwzcQAJJfYanV+5eWY36rqVQl\n91ukrJGGpOdzsRcKlWcIrlNMJxV48TbG8l5O2pdyARMyZqQqzJOVs/BWxK8K\nkPifLyiX4XZZQTyl3dUo0FsAia0Vmdc3/xJWjsys/Ud3ml9owlYLJqsVGe6K\nOkbWm9gsdsXINH34WkYRWjCLG0elsSJeW1jnj8AYfbITce3E8YiGpgeTTQwc\n4ZMsxVVpXvyGPYVSFXVnE3FVrqGqgenf4MkJGOcne9nChBzngg6uCsQ8liRd\nn0oXLCeJj9oK4XUiwcJ6Fy9cs96goZRF5wsO4eoji7A6yWMkhEJxGonymfEh\nyoF32jX6wodLK8pqb+QVazNLPoc6S+TEwDQIq2ZgOz8Wrjd+neeFTAZZ8AKy\nAIOz2DuSGK3ANZdxMR/Uc2XKoWvigMLDtKlnCrg30ylvXfC2WYVxn7ph/1Zm\na0b87ntFJ6FGAz/ZQQmuGg1sIK5P1G3+AGVKIHb2BqIhQHQayRHoQGGPYm0k\nVURD5AvSczLl4O/4E9fuyJ1zy276o4PAaQ8NWkhxFY96LM7MY5nIWJjVLLNZ\nTpz/1Hru64b9cjcoGkKOJcsycx0vhRcUvOVL2ieb0N7qFAqedKeJk71yfea9\nJ3yUTIFqBzB09+AM3DTQMz6KCwPVUMOgfE0WYTYgD92vLUchswP/77s5yHzu\nLzRH\r\n=jGe/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"fa5c2c2020f3eab1fe6a236533759124209d34e0","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.20.2/node@v12.14.1+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.14.1","dependencies":{"mime-types":"2.1.26","whatwg-url":"8.0.0","@ampproject/toolbox-core":"^2.0.0-alpha.0","@ampproject/toolbox-optimizer":"^2.0.0-alpha.1","@ampproject/toolbox-runtime-version":"^2.0.0-alpha.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.0.0-alpha.1_1579704267830_0.19184779532508012","host":"s3://npm-registry-packages"}},"2.0.0-alpha.2":{"name":"@ampproject/toolbox-optimizer-express","version":"2.0.0-alpha.2","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.0.0-alpha.2","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"sepandparhami","email":"sparhami@google.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"0eec3ef319b63051759b1b31dd309b29351696b1","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.0.0-alpha.2.tgz","fileCount":6,"integrity":"sha512-WMraZ13fz3vEvXW7tVsdDehkIgcPPTsuHNtvR9cRLLv5KPKHuPZt/k5bAETZ7cZbxmwnyrdI9m7c+CTbcZ82oA==","signatures":[{"sig":"MEYCIQCSDDE6sMWoU3S7JWhg5F5CYGTnxp9s4pahChry/9EX1QIhAPutDk7cOSQ6lRaN8jcgIPm3ok8+VsjN0ok7SdtLNbOv","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22906,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeKGKOCRA9TVsSAnZWagAAwukP/3u0LISggVSp6lsoOtq3\nH35+h/oix5ROPb2aSHnYewBEd14/UOV9mZDXafrUPK2qWT2zXRShR4MR1inf\nmxGj2n9hGf2ZBzj/fqrQQubACDL3rwtAZv2h3xEBlQBLefg1ar4N95BZMWPJ\n/owqkYSeljsC0zYSrU2Xvd6vkPpf7DTMsKZIn2J1Jp2WuyI8tchImxQCB48O\n80OKljzw3CmqpVGt6UZ7/tTSkJb3LAYaj/J6w7KMPflqHGKPXLZ9+rtbMbuV\naCd5WZ38XskOczYyd1Aag7sAJ5YbvQk3I9yk3mxUKRRQ2PeA1rHTFh60U5fQ\nli781oLFN7ce6cUAVuKt5aXlYMkoYzcUFh2tspLs1OURUEIlt9VqTC2ChUEq\n8e8RNol5I0CavY28tvUKctt747SdjEt7nizYmjGn6SM7J3xRYkrV1pH3KSru\nXTds5vc/Yuh6Q531YqJCqSJsrZGDORKfR1iOnYV0RFNWukDTNcYHdPt70fzL\nrSF4QRO+UZevTJWZaDpuh3QyIpHXLwKiJnj65WT99fm2v7f6yKU55ugKLgZo\nnIFEQdFiiJdOYfJOyE7vOCNwoy/TWUhZ+pSezdzVj1EbMFEhEqlfuvDiLbZI\na40cJsazwmp/IWMjCpAV5ciUhDXTJrDFCxuUcKW4p/aU2NU6+g38KR51cxm0\nIb9w\r\n=MmAu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"fcd31172ef02fd2d4162a8fb7decd2eefa468873","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.20.2/node@v12.14.1+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.14.1","dependencies":{"mime-types":"2.1.26","whatwg-url":"8.0.0","@ampproject/toolbox-core":"^2.0.0-alpha.0","@ampproject/toolbox-optimizer":"^2.0.0-alpha.2","@ampproject/toolbox-runtime-version":"^2.0.0-alpha.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.0.0-alpha.2_1579704974333_0.2703354126603057","host":"s3://npm-registry-packages"}},"2.0.0-alpha.3":{"name":"@ampproject/toolbox-optimizer-express","version":"2.0.0-alpha.3","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.0.0-alpha.3","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"sepandparhami","email":"sparhami@google.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"ad39027c090a23c16bb3001ff0983a8bf57f51d9","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.0.0-alpha.3.tgz","fileCount":6,"integrity":"sha512-qg6VTS1jFcJe0sPG7qMIDpV6qztkTE5eWKKugcBorwkB3pNW01QXN1wZzMZd/PJcGXYgskq8rI8tfXU5W9vrIQ==","signatures":[{"sig":"MEQCIQDPFS+h0e/wk/xlvLAdvQ/Wh2rgOYOUKnGFtwaqfvPOhQIfatsqrA2mszpv0cIEadT8KsGL/JDZqFj8+VHmpKVI2g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22906,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeKW72CRA9TVsSAnZWagAA+M4P/iey3Si1RoBH6p0oKTd2\npGM64qrm+3p5bltwLQ2mmQgx9+NCKyv+G2BUj/EXNwOUAJuplga6D8Gh9tfO\npuar8VyBf4+GKIUgGEoBSNJSMFmWhWUaisryYKS0Hhtg7BWJ1Qgbr97GyRdl\naAgwmDS7Qd6q0MvxSMexRMhCP6o58+vBbMjGQeXkj5p2HFmZC6NK0SOr/2N9\nm8GzEqU6fu4wHUaxZihZpTq8cq51TGOlpW+tYylnrb5rQfCJF95KX9C9mW+J\nKIYyV9toVEIJjFSF75e6F12JWAlOAzU4fwTHAJUtKkllvgT1NQZwDqHz9wKn\nOHqAhDFamFJpWm+LQ31C97q9Zvrrn8tRv4I5BzW+juTK7zYIno5LO+vPtgMn\nyYvKt9Iq+ykwN9goWeJyKLJJg5+wN/X8C7cTRPl7tz9rah2UwSALEXZbzt64\nTQm/DFptWohlSNK7LeTzF78KyVg0vJ7OUMsYkO2rdzfMSYLny43w8xRyhyAN\n8nyvJ9xX5ipYTvjP2JnyOmi+3Xv8hX7Z9bBxm36ZpRNpTrD5l/JhXhfhP0yM\nnElWFHvEjqqYh7hESnTyo+p5AvDp3UNfkHx2Kpz+ngJgoweBTZBl+FiR5R8E\nNZOi5J94qMFDKPJaNHRRvsQuYVF/MX51Gw+3DhxZkLuIKfYRRZvHGzFpscF9\nq4Qw\r\n=RWI4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"2a81fc3795a0a5354920f7c2855af9900eecacb6","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.20.2/node@v12.14.1+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.14.1","dependencies":{"mime-types":"2.1.26","whatwg-url":"8.0.0","@ampproject/toolbox-core":"^2.0.0-alpha.0","@ampproject/toolbox-optimizer":"^2.0.0-alpha.3","@ampproject/toolbox-runtime-version":"^2.0.0-alpha.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.0.0-alpha.3_1579773686222_0.6035219145441599","host":"s3://npm-registry-packages"}},"2.0.0-alpha.4":{"name":"@ampproject/toolbox-optimizer-express","version":"2.0.0-alpha.4","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.0.0-alpha.4","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"c176a11f705d57bca6bc2eeae908d75630dbfd37","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.0.0-alpha.4.tgz","fileCount":6,"integrity":"sha512-bOlveGv566x8dOrcBLcJwkm9ZbOrE9oWMCt7ObM4mZK64fQULnfiwlyctLEUz7TzPdgtBWEqwbCcy/FlbXCzog==","signatures":[{"sig":"MEYCIQC4B9isZyhwJeDXnRXWCWAeSZDjvhEd9z8vd097828xzAIhAJGyUmRtR6OzBSXrgVCKT2v2nZcrEXANILmkWo40DHDK","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22906,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeMFKVCRA9TVsSAnZWagAAprcP/2X070l1hyQ4N626FDVa\ntGFxeSf9Br89WwscPcu/Hdkp8huE5/QLnKp2MbRKjJxFqvpfX2Nip+iVtYMd\n9y1KiysVlbLzv35hfow0mYUlyvKCOEGHftLcUB3Ss0hMsX+XqFcODp45taqa\nkRz4jwARkfH5BaljdGuqMUQeJ3Fy6Tiq2Yr6Mx9NkO1R/Ee7rFa0+OX2BF+J\nAw4/04SHIEJZn/hAaV1sdUpo9a2GsqpjGVUhYEXWSR0qgcDjyI4sUkXlSkoM\nHY9qH5gYwusHjBeEa1/g4hgFyIsxX1HtVvqemGBehgshE/AcBZWSw4NzoXcs\nst+B0f2kf4XP9PaSMJ/bDSdhpFSotaWsyMkiZKCDFACa3QYsSnvHKwzdlOge\nWlUrFwCzLRriPVPQ6EfrEgcnz/ZhaLj5wSjYzxFFdxtyRIR1wxOaZskP/gaS\nluqvPn94hPCzhJckbwpU/VxLWdM+/B97fz+nixGGIsdBiTfRRtAFa3E0H3qC\n0hoLPw1NQAQOEQ9s+b6L987kViYdhAL+7LxeyacU9GMfZKbf2rBiV6rBCoBP\nRVJYe0wAZaYvsbvSRWrnd8WfFd9G9dTk8S0zkiiOfHx3EQMMPmOTu6P+CXXJ\nsTqPhruSgyz9dqRhOfC8oUrzwr55phWsXg2zGmr7//T3oi4kRlU83+HYSiwC\nX2sr\r\n=xIcr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"fe0d72e23b0d537c91fa78c465ca1ea99d3487ab","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.20.2/node@v12.14.1+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.14.1","dependencies":{"mime-types":"2.1.26","whatwg-url":"8.0.0","@ampproject/toolbox-core":"^2.0.0-alpha.4","@ampproject/toolbox-optimizer":"^2.0.0-alpha.4","@ampproject/toolbox-runtime-version":"^2.0.0-alpha.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.0.0-alpha.4_1580225173317_0.9414940372794061","host":"s3://npm-registry-packages"}},"2.0.0-alpha.5":{"name":"@ampproject/toolbox-optimizer-express","version":"2.0.0-alpha.5","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.0.0-alpha.5","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"02e2af306f62bf68160f32467675f23a4c42fdf9","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.0.0-alpha.5.tgz","fileCount":6,"integrity":"sha512-ayxV1aTj2EWq9k41IARr/8xdpJp2B1fO5x3WOpHkaQePJ66L5v9tQDg6DtjUx7Gb4QS5hoBx5xOleZpGf1Uvww==","signatures":[{"sig":"MEUCIFwH5vzkfGXBGNtOCT71HiGQL0aTZd/D6bIS1k1D8LrZAiEA5IOZxl+VNX23ch3U4IbaoTwp7P3Mjs/uFA9tX8uq48E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22906,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeMK2xCRA9TVsSAnZWagAAGQMQAIzpd8dDNDjRQV5gq48t\n265o/OFHNIdDVAMX8pckro6dWD4jR+GP1C7JIT14MvvZaHvSBtxOPUc1mNUO\n8fT+3D/atnoHzG9t/ffPnhhPA0TYFWVRnRPKBEz1yqdvqhJAETOQX0rxgFqr\nDOlilApKdIRuyVwfqGeUhR/fzeLZdhega5e8XpvOxKlc1m/tlKpiFAUKlDSR\nT2nGEUlNNxf7lxyCTXokGBSbPlVleAiC3FufhUpqL68beHnNO/4cVvjCBcFQ\nQzJKqQ9e+0AuFrbhZYrdQ2QAnc2uNQ5uzO+emtycXV5X7LhcL7PCavzMn6Pw\nhpFltTiDzUXFkd5EkCz+CNk50lZQo2AP7VXaGZLw8s1Dl9Hfmd/rcRdaV9ro\n0DPK20LTiqG79IQjTdsZ3Ez2fEvSo1yGV65NBaNqsCIgrGfgCo0as1i0g1yn\nABll4CgBCdUfEch6vGPL8/y5mRTJdnlClUJEt496/6tQSzSGoJZuhsF9f2GG\nYRPg9PjWWMWawn0UIoHn1JDSK+6Gd8s3tfPACo6/ZHKRJxt+gIZVZ1DXwRM1\ne2v81je9lIoG0jygZB24k2KjODXyzCrDZOY2uQMQCQ6oQq4TUJlUXW6R8CPU\nr+okPs7Q3tisOvjspS5evvZasx28Y3WMwEr5STMhC45oJuIFsnSGwQcZzKkc\n+fko\r\n=BiDY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"91100dd67c4af2c28d83945c2fa4872cb3c103cd","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.20.2/node@v12.14.1+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.14.1","dependencies":{"mime-types":"2.1.26","whatwg-url":"8.0.0","@ampproject/toolbox-core":"^2.0.0-alpha.4","@ampproject/toolbox-optimizer":"^2.0.0-alpha.5","@ampproject/toolbox-runtime-version":"^2.0.0-alpha.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.0.0-alpha.5_1580248497290_0.05248571463234719","host":"s3://npm-registry-packages"}},"2.0.0-alpha.6":{"name":"@ampproject/toolbox-optimizer-express","version":"2.0.0-alpha.6","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.0.0-alpha.6","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"5234485dc2be72fd0a7b5877254aefc300e9c579","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.0.0-alpha.6.tgz","fileCount":6,"integrity":"sha512-fY0U4lAejtYg76G6DmhHBvEI/5xP+XDsDO6OqJfoDT1Q0sgEgCDGh74dkk6WqFnPe+9kqrf2wh0fpfK+E0HKxg==","signatures":[{"sig":"MEQCIFIbMUbA9JOG8DxyXBpRgy1Sxey2MUckSdrfJITk+dC6AiBV129qy3bP1DpeW3R74IgPiTfWUBG7d+coIqt9lUxrTA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22906,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeNBxGCRA9TVsSAnZWagAAsmcQAJLTvmPIIKBwT0THI1wf\nD1tqIvoMO1mC+cYE2XEuennB6+OSNSZXnB9UhMXWBs4nHgESS/NRRh2/WNqy\n/xXyEpOYqnFjbVyMhe4YyvsNzdsHQHBYGzzw2Qccn81+Rxi952gLr5nreqjg\nyKLaZpY+F1/5B9En9ArWskewNQ5dRFcaF76roMLcgYq4uqGKv2idTY7YdT/7\nY3QXoT60gAjiR3KmkTCJP4TQYNrojeNQbJ/bghOZfu/+4SAHFevdqAXjQCS+\nxhs7kqP/GeSLdCtw8hu1cGewSmxWrrR3lox6uKLAhncm3v/y+j98ywhJnmXS\n9pZLTxYUiiFbScjzKbPHo+hlkZW71EKKI+TJ34BZJHQG7HFG7UX+UX36svcz\n1rgWfXyNOFstkzoqleOdVNcxR7fuNLLUZWgNbqW+2wLwoAT4ALANUInlwhzy\n1pxCgIDrAKNP2adFRyT3F75vUYw+iL0GyWIGtVWRQEQHiZEqAcY1UhVoHzSI\nPZ+9Z6qO+2+tSfvn8PF7sHvbQS7UPW3SewdQ5HfJ+peMSzNfQ+Cc5B8HvULT\nqr6bp66gExoUH+XrlFsXNtu+1rfuLNoawOPfPnY4LYVUERO2c6xWOWDz4Nts\nKPzFb4y8io5Wkt0cfws9iKX1lpnVRYounIFEnohCS1p5ZrqsNFGZm4sYiCTz\nA+qE\r\n=VedL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"9d8d41a7bd0fd93c11fe44fa2f84a4a0778fc830","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.20.2/node@v12.14.1+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.14.1","dependencies":{"mime-types":"2.1.26","whatwg-url":"8.0.0","@ampproject/toolbox-core":"^2.0.0-alpha.4","@ampproject/toolbox-optimizer":"^2.0.0-alpha.6","@ampproject/toolbox-runtime-version":"^2.0.0-alpha.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.0.0-alpha.6_1580473414180_0.8597712144192562","host":"s3://npm-registry-packages"}},"2.0.0-alpha.7":{"name":"@ampproject/toolbox-optimizer-express","version":"2.0.0-alpha.7","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.0.0-alpha.7","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"ca425df1aea51af29e013b62faa1a343bbc378ca","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.0.0-alpha.7.tgz","fileCount":6,"integrity":"sha512-md5LJYXqS/BjGwDP06Os5vAsT+/jDa6dE2PnB5YlsEvGpZUpElyYjt/HGylBNK3P7ByjANxVyLzeD+pAKnz66g==","signatures":[{"sig":"MEUCIQCsdT9w0rSrQdLyxBPPNS00pNBkBlSXC1JeoyIQjhki0wIgSYF+PO4ArOJnLODyMocKCWu83+qIJXcFiWZEIdmqaps=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22906,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeRbwNCRA9TVsSAnZWagAAURkP/0peN/Me+8yeWzBlvDg5\nFJNpaz/Vtwnha2YVxE1/eumOlkYD7npNgDERZR8JkAx+ad6y8nHXV98NQwh4\n+fvzVgtGvTJaH4JFG3sgg04q9itpaWJsDNgkWTdFe6EeFok69cXmnGm47cwN\nXL/n1Lbbr55pchbGgf/HAz0xrTTCTePwo7mwlVcuBXFK224ypMLnH+51SINJ\njL+F+ROYHCyMuMaCuFHZaWcEsPZl55BGXKRZGIkbuRB4Iio6Nr4A8ShktJ/s\nw3nF1jEaWoQ16E3pnVgUihuYnkLYiSBUhPai+LHiN7O4zoOOk+9VXAUXIzcP\nluYUpZAZk6rm/Bsm1we5H4FTdRhebYzlNNqIwHdlACZfUB8dCPEnMVY6r/Wm\nfdbb2M7q20bC+lh0rTmbmjbQ1UmwUCTGMZTUMYAy0HDTpUQ+Wo1Waph03cjK\nbFtmTnffsmfx38hGxHx/pe8ryYnYl/svnbZ/hejgJuuQzRgekYKDb7U0BPbs\nYnI3n4Tt80sGcF6Sw4JeTVd36afMtIsQEA4saMZ7h2ZZKru9hWfFq3dXsa06\nroQ7fkaS9dJEyma+xoRCAHwKN3kZo7kAsLZH/Dmxzq9sEMzvajG4qMzNY2a6\nQ2Lyy4+xv4f1qZY0Iq9iS3Z1kMIyc6xIIWFi63US5tnlXcmGPjE+gjDMCgCh\n+h1C\r\n=qkYJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"2e6b60d382d205f884cd78ce4d41fd702121145d","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.20.2/node@v12.14.1+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.14.1","dependencies":{"mime-types":"2.1.26","whatwg-url":"8.0.0","@ampproject/toolbox-core":"^2.0.0-alpha.4","@ampproject/toolbox-optimizer":"^2.0.0-alpha.7","@ampproject/toolbox-runtime-version":"^2.0.0-alpha.7"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.0.0-alpha.7_1581628429177_0.8211702651110095","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@ampproject/toolbox-optimizer-express","version":"2.0.0","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.0.0","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"2fbf2e7bbc35639579f779f885865de885aea1d9","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.0.0.tgz","fileCount":6,"integrity":"sha512-FT/qiOn3EMMvCcli0xtASaqoiD8OLEqLO8vgAc2n2AmwSbgYNaOu2OrGpwxG+VqjxKUTzaLYNyvhVrPyDlHxLA==","signatures":[{"sig":"MEQCIEgfzpOALqkxPrSeer4mK35BraeeLqKvOuR9jR6AJZjhAiBGiI8ZvKEPhPo1fSggmriYDsVl3rZdhXs6a0ymHeJeZw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22874,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeRb6iCRA9TVsSAnZWagAAYqcP/27Q83gy5CJ7dZKXlJ0F\n5P2QEyo4Hvh1hnatCJPhPm2rBNOCG2haUCeNTf9JxJgVy/0HYsfkW4I+1YLE\nE2wQCmdgxmazjCGPlEcDMR5c2+Mw4Atf9Nt1MmhQKzZkk3Mug8mFikVGLXCI\nfdoa7D2zBYD4AiL9AZ1ckkUI+Ali6sIHfDTPMgcvhT87XmzzdvX8ZvC/kcxr\n6NIMJequrfzLjJTRj83xoCgoq+k3lQEhwFybV9LqrSog5E8kxGSniKGfXqGD\nPZTSXbwPVB167VCRk509Nfq/DYMstLptaCanv2VjLTdM/VlJbp2/cJ0BOLib\nl62DgcihlYNamX37fTonuky5+j5+IO/x83AUw9Y163Mw38UekZ11ECoC7TA+\nuY0z5W7l8591elGaAD/xBXDZBFNamimxtsHYaRuFDSp9tIAeSvUBvVzPdy2p\nVso4eV8Gh5L1KuQjkVihkbzN281XsGr4GSL86exqAVwPll4XdhbD3wbDodpX\nsnFxQiAf4o0xEA/UIvvOsSi1D9v02kpGQo6aAzLLGLA4AD4JoIxJ3B9+pond\n0ku9NO9lWw+wklxurDQdGg32CrLIPfTJjyIOF6wCX4iCmgidcx3WHiDaFun9\n02Hy/Ax47umCc2gFG02D32qtxoYbJU92IlGLKyleoVQLO7njuzWvMSzucLGm\n3JQL\r\n=Prj9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"908b78b9d007d18d97c50b5a79421d5936150233","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.20.2/node@v12.14.1+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.14.1","dependencies":{"mime-types":"2.1.26","whatwg-url":"8.0.0","@ampproject/toolbox-core":"^2.0.0","@ampproject/toolbox-optimizer":"^2.0.0","@ampproject/toolbox-runtime-version":"^2.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.0.0_1581629090364_0.610468519543125","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"@ampproject/toolbox-optimizer-express","version":"2.0.1","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.0.1","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"365534ba3845fc1ca1e1d4b2da84431c3473f6ce","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.0.1.tgz","fileCount":6,"integrity":"sha512-im/VMdfEC+ufrNsVUr7jusjLwQtqOO0gJxTzvlMKF8S8Rpnhn7RbZY82aRO50JUXjEdHGtWCE8aKq6jhJDpRDQ==","signatures":[{"sig":"MEUCIDWpCLfGa27HInK1m37QBg3v4HLeNy5zToLjC5mrVk0DAiEA3saWRytJIMNPIdcVAYII4Sxi2FZ02thJi3SOLvloIMc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22874,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJecgrGCRA9TVsSAnZWagAAQ3UP/3eaKI230NhdM6EEo/dT\nwlZ6887Kq6IlzlcHJsci5CBJTbd7q/HWHfnZo0PM37xL7rIoBHng219dIlyY\nVZfOTv7i+C+xwwooo/bkmlkesCrpv7bVu3aiO1+gDMu5nunG9XWKRCeFmeia\n4xrOP6pXXlb6emewy3XPTsDYuiV8dlN1d/wZ9UpdKIFuS5LCIs6Nj90g2mgP\nHevegso+0VAD2tCFjUBlxspIzBLXM/md6zaD2kKQZJb83aAgBYZq/Qn++xyZ\n/mz0W0NIcKfjeJb8yfQeRgWNHVIErU9K2YCRruVwHjmewYDCdPMnvKxVrrqD\neKzwa9L6zNN+yO7c56oXXpDcyTJ02qF250XIxMJxd0mR9+adyvyjg89Iqioz\ncj7h398vJrsyJanqmQL394IeBvZTGmE4gig2MXSEZMWF0RKgqWGp1mW+9xzp\n9WVn6EKFdxENzZhQ4spRgJ/Tm8OoPXBt9Wzwe6C/Y5q1cXabliGRbKVbSHuv\nH0j8gImGP6IFYGAzNc/Fwfz1uZMp/PUDGdzF3v58CZOynYlQorytiw6yTQBi\nhBKs3jIkU4MQ8947XKyORx3Kjbn7CLOKxaPg2jISWZEAONXGSUVQJ+o8Digc\nhk4GR4UhCLHFKyZDXEF0CYOnYhKGGOF4tZ11IzrGcd4CJfw8MqgwTUuV33u6\nMmvG\r\n=sNqc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"2785e09433bb22977b61f153ed7694b68ca5151d","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.20.2/node@v12.14.1+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.14.1","dependencies":{"mime-types":"2.1.26","whatwg-url":"8.0.0","@ampproject/toolbox-core":"^2.0.0","@ampproject/toolbox-optimizer":"^2.0.1","@ampproject/toolbox-runtime-version":"^2.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.0.1_1584532165960_0.5836289635247647","host":"s3://npm-registry-packages"}},"2.3.0":{"name":"@ampproject/toolbox-optimizer-express","version":"2.3.0","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.3.0","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"3552157e9bb417ee9999689c0fee958fa0f62073","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.3.0.tgz","fileCount":6,"integrity":"sha512-XrdH0EZgmv8J6lpsypAGNQMUat08mlGpx2Ih99+431UFSIL+CJ11lJ7GkFuhIYeTfa1g85Fp0VPDDat2RJpXXA==","signatures":[{"sig":"MEYCIQDKJ/ufkstqGUlbKjTFjOK0eKRqIHDriam2FiLbmseIGwIhAM95HC97ntG8CmHKtULRhYJMBwMHHnwToJxDf0iql6wr","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22900,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeltSHCRA9TVsSAnZWagAAgrgP/1vMwsgrABzHcOskwDwy\nzCHgVC5Gc1kGRrA7DSQDbPYXFUlAufZLZYQCWiJN9QGmV3qd+wHD23/OthiC\nFvbdBVUcov7BbgbpPAA3H1sGkTjKJ9urmiQJgjCo2GT4vlc1Wt+TaCbRUBEz\npf9Y8QTpgXFmleohcVBEbIN9mzFGJqXs7oxw5k47SCQVMvd5v0uryxPfDz1i\n+s/PJoeu1YXU6C4IyXlPYcWT4D+cz7RqnvNtzxvbncBdUs2anDao0+Ds5xDc\nUmar6ftTMjGntNnXJtar6D0D1WrSPy1NstBt5RPDS5LwTT2OG0w+27uBW7qa\nfWI6+7uwStZs1G8A1MWcgdFJQFaI3lwAOlAyEfdOfBjWKSRd5bMRkubapjQk\nF9UNo55In3G8UYaAjnLKhCVFGygACM5zjbnVxEoCPRXwfWTzO+AWgNvgdrDt\nVntzr+75UD7SCD2NqzXV97oo3MIqOrxQeNyT3jTzPr8ZhSpf72nTbw3dSzec\n1QRm8jkD7RKCX+N3FbW0+NXUh+mCQu4llzZeOim89gIR6u+pzi5qU0oXEh1L\nISrgi8WSnigvwK+xUMAkMGuj4UwPoLTCk/nFkwtM+kRRBAlRTbhGKRQyTQ3Z\n6zr/YiDU1tBbkw3sZ/GEX3hDoOrtJdGXTf0URZxmq3GN5EdEr0R5f8SUWOIq\nJLYu\r\n=jmGK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"bb7eaa6c720044e84f01c6406f5f0805dc637923","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.20.2/node@v13.12.0+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"13.12.0","dependencies":{"mime-types":"2.1.26","whatwg-url":"8.0.0","@ampproject/toolbox-core":"^2.3.0","@ampproject/toolbox-optimizer":"^2.3.0","@ampproject/toolbox-runtime-version":"^2.3.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.3.0_1586943111453_0.5257691353106229","host":"s3://npm-registry-packages"}},"2.3.1":{"name":"@ampproject/toolbox-optimizer-express","version":"2.3.1","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.3.1","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"668252e48bd266930d2c91881eaf72338382d9a2","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.3.1.tgz","fileCount":6,"integrity":"sha512-+oWj/i6Ej4Onaewx1eWORKCZtb5s3cldttTHwQMonnKGiCS2dnGIfEZvE9/zN40I1HBGwIpSoWSOprwnW/Svcg==","signatures":[{"sig":"MEUCIAEEkO//Lk6Ef+3KSRHaS3+y320DldqIdEbuuOrYWh+wAiEAnpL7PfuD8BRr1F4F5+N3WnWr7xPaLJKwqruVWAd3lno=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22900,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJescTbCRA9TVsSAnZWagAAtR0P/jDbjwCcDrCZ2P8MIJN9\nEvqjiKiMBYgGQxJ8hWwTYaqqz6i/c47NOvnl4bGuZdeAC4u/1MfQtDlw41wf\nHXn522+GDVJlStD+ER85yyjMkrBq8XKAUIddkcui6ZzXKdQl7f9yWDbrSLqS\nsYxTIg3Sbi+Oi6RXUEOeh9pLD+UwLRAOfPRrlX0A2UQ66wZP7qjY3Ge9Olyc\nxZURrOVV0nnbttEBG+0sSDj6fArrnHum4NFRI8syUTYawk7o5Pif8TW0NTdr\n7ofANwXwqXOmkv280sMX7qpLa6Pw9UFZw20OCHy9xXTrQso0/AMpP3QTl5Db\nTngffbB1IxO4SW/8SztwJstjNt5o5bvzgXnhjipG2ov4BuSxq92DJnfPw2HH\n+uKNGlesJRUXnuAH4dUjkfJP4Qk+nZgNThh5wJKBM4OeT+agaLFhY8jjsS+S\n5c9h6U5vVSUxKqwawlOMeQodaf90UN2pLipfxvLvbCr9PifvlNpktu8eoNHA\nwPAmszmgRlpJHq1IcWjn+xjDEEFpi1lak9uPvZpfkwnV7kzgsQqTTVKrmRIY\nEU7ebGcjPXgLDA5GFCiZQ6BycEJqabJRhTTTr8rDZ/N7oAlqbweGHBJNJtB7\nRAGCAV9AO7JgWS+CKYVUEU6ygv32LShgiVXRL7Ja5uoR8R34PqbF0oz+mycy\nygi4\r\n=4eb1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"2396773adfc982c044cf932dfef73b6955cb005b","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.20.2/node@v12.16.1+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.16.1","dependencies":{"mime-types":"2.1.27","whatwg-url":"8.0.0","@ampproject/toolbox-core":"^2.3.0","@ampproject/toolbox-optimizer":"^2.3.1","@ampproject/toolbox-runtime-version":"^2.3.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.3.1_1588708570900_0.09116860827556628","host":"s3://npm-registry-packages"}},"2.4.0-alpha.0":{"name":"@ampproject/toolbox-optimizer-express","version":"2.4.0-alpha.0","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.4.0-alpha.0","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"508b434508e2cbcf766683502e8ee4c905a90c1a","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.4.0-alpha.0.tgz","fileCount":6,"integrity":"sha512-HbbHtF1fI54eJDeM3e2tJXmqzLATZRYSmXdO22L/zfH9tRwLzui0q2U4Qpcjyx8pjedfp7H0i2kpVac48Sv9Qw==","signatures":[{"sig":"MEQCIGXOMpksIIjlKjXebMnONL07YXSpPoBHPkgpmaKyoPL+AiAJWFYsvdp+PsC0N0tPbj/4vi77x3wOp9UoJILMnp9LEQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22932,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJesxTmCRA9TVsSAnZWagAAL30QAIGEN0OqyZ8wPZ7kgGom\nd2lL5AAhtzElhlCfM2CK5in9l30g0TWjAxedRFmJutX2xf2+g7+CGAv7fb5H\nF1ZdC8yuzPn9RwJlpnmO0avhE2rXqT6cFmmxjgvtyusK5dLZ9C92OZODTQex\ngUmgHQSF4HHEwOBX1+V8YgW79oi01Gc9pYSlXzgdL/S7x8N9u2xzx/irl+1F\n8qUyigEoqzwgGYf2MuqUeJ5VgOyWiakI9ZR5+h91AB/DzpSvwZWJ9/Mj2laW\nEOjTopCi8PsZyGxxE5VuUhSS3XFkhmHkJhwEDtl2lT/gynYZ5gpYfuTNS0si\nWqLKlx/piO17o4en2HO8iZ6K379b320h0skNukXoTJge50XJ7YumJBfLx97g\nVyIpJR7PRPiAUKDli6jG6JstklnssQBxHsegr6vx+eQllCdDcdyMmNBEQGqk\n7FKtLnu/HoOSyGXz4URTgYk4ZQ+FaZ1FgKn1T1PTjW6Dg8kMIFc8wDtJOxOl\ngulvqvFau1T01Bzs31rBNr27ehMfxypgQKUGbluhiQ+UGgNDF6nk+NzPBUZO\nWHWPCVkdZr71mgoXitXizIXM9JpUnEuo4YPX0VW7xAHDM9/Ggzc/duiUNSdO\nEHD7lP8i85qQDXBYtrdnCdecCxH9B+klygtwA5umVTGRGjz3NV6iWGtTAf8y\ncg8S\r\n=DngK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"## Introduction\n\n[![npm version](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express.svg)](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express)\n\namp-optimizer-express is an [express](http://expressjs.com/) middleware that optimizes page load\ntimes for websites using AMP for their canonical pages. The middleware uses the same\nserver-side-rendering optimizations as the Google AMP Cache.\n\nThe middleware uses the [amp-optimizer](/packages/optimizer) component to apply server-side-rendering on the fly.\n\n## How it works\n\namp-optimizer-express intercepts the responses and replaces their content with a version that has been\ntransformed by [amp-optimizer](/packages/optimizer).\n\nAs the server-side-rendered version of the content is not valid AMP, the component also\nprovides the original content on an alternative URL. Server-side-rendering\ntransformations are not applied to this URL, and the original valid AMP is served.\n\nAn AMPHTML link tag is added to the server-side-rendered version, linking it to the original valid\nAMP version hosted on the alternative URL.\n\nExample:\n\nA valid AMP page is served on `https://example.com/index.html`.\n\nWhen the amp-optimizer-express middleware is used, that URL will serve the server-side-rendered version\nof the content.\n\nThe original, valid AMP will then become available at `https://example.com/index.html?amp`.\n\nAn amphtml link will be added to the server-side-rendered version:\n\n```html\n<link rel=\"amphtml\" href=\"https://example.com/index.html?amp\">\n```\n\n## Usage\n\nInstall via:\n\n```\n$ npm install @ampproject/toolbox-optimizer-express\n```\n\nThe AMP Optimizer Middleware can be used like any other express middleware.\n\nIt is important that the middleware is used *before* the middleware or route that renders the page.\n\nThe example bellow will transform HTML being loaded by express-static:\n\n```javascript\nconst express = require('express');\nconst path = require('path');\nconst app = express();\nconst AmpOptimizerMiddleware = require('@ampproject/toolbox-optimizer-express');\n\n// It's important that the AmpOptimizerMiddleware is added *before* the static middleware.\n// This allows us to replace the parts needed before static handles the request.\napp.use(AmpOptimizerMiddleware.create());\n\nconst staticMiddleware = express.static(path.join(__dirname, '/public'));\napp.use(staticMiddleware);\n```\n\n## Options\n\nThe following options are supported:\n\n   * `runtimeVersion`: true if the optimizer should use versioned runtime imports (default is false).\n   * `ampOnly`: true if the optimizer should only be applied to AMP files (indicated by the lightning bolt in the header).\n\nExample:\n\n```\napp.use(AmpOptimizerMiddleware.create({\n  runtimeVersion: true\n});\n```\n\n## Best Practice: Cache server-side-rendered AMPs\n\nTo achieve best performance, those transformations shouldn't be applied for\nevery request. Instead, transformations should only be applied the *first time*\na page is requested, and the results then cached. Caching can happen on the CDN\nlevel, on the site's internal infrastructure (e.g.: Memcached), or even on the\nserver itself, if the set of pages is small enough to fit in memory.\n","gitHead":"aeceb5cb83cc111c08297415ab469696f2f7994e","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.20.2/node@v12.16.1+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.16.1","dependencies":{"mime-types":"2.1.27","whatwg-url":"8.0.0","@ampproject/toolbox-core":"^2.4.0-alpha.0","@ampproject/toolbox-optimizer":"^2.4.0-alpha.0","@ampproject/toolbox-runtime-version":"^2.4.0-alpha.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.4.0-alpha.0_1588794597953_0.337912929170608","host":"s3://npm-registry-packages"}},"2.4.0-alpha.1":{"name":"@ampproject/toolbox-optimizer-express","version":"2.4.0-alpha.1","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.4.0-alpha.1","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"13fb63f759862175c42f45d48786495bbdfe3dea","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.4.0-alpha.1.tgz","fileCount":6,"integrity":"sha512-/PQFigFT4s3eetgH+82ov+vGivwlNCBXaTSF8am53Yg+3QvbnYKlD/KKuj8Od/phAet8FugA6fp9KvCZpT/7cQ==","signatures":[{"sig":"MEUCIQD0Yu0Foi8bpDcNTRfaAR6ZBxFvD4W3NVXc5kCk8AwV2QIgfqY4EKjSctTlX8OKuKO2rG4zQ+QNR0Huy+fFtiFe3h4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22932,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJes+wWCRA9TVsSAnZWagAA2dEP/2PNYEBJ6NFufzoL+auT\nEl1+wdj2kvFCW6Diz7YCT/tIElECZg+oZQqCjhIHYsUo+dHclql0aFEmc1Rq\neb2y8DzDqZzQJ680iVweza1HhD2K07iVwoQrxDClT3gv5V/lmHxIfviaYrEv\neubl1amiqjoMGbMUnp1JVB2Tzhu0Sl5fWbZI6jERqlCA1+FFf+/lES/PsCDB\nb5KSkG2ARdDVoIonA7m1dM20zZ2AaEFAxefXtO7egLqMxghtzwaybEaWhgM6\nPf5xRDI7nTwzZy477vsoR1AYWhxU/fEEC2IQkuzJkF6lY6RiZs00e6AZZfNx\n0tWeM+/bQGRg2sibBAFsqQ7O671WgP37iuspgFqIJYc+xrBLmkWAcQ4a+eyT\nJ7ZmW6X6B9OOGSHvyIUlxvlyovwihkEqMcPgNY5kiru1FidMOk8zBvKQ2hRG\nhl8pxbjJcHWOwMTyLQUwPSPNSXauyIYY7L5qDumhV+5+xFot5rSkdvwFy/Ik\nlRuLMVUk3CwU9YO3sES6D9rrm4vbvEenHCe+MVlKNNeddsWqUI+SCv3Kf0kO\ntxxzVgeKSmsUGiDz2I5nlXE+U2pY+MHqsxw6mLqaKmjOLT7JCCz6FMBfaqzU\nPxZDcyWz560klkaOk2eutmeD5Mp4+ehZsLaEk4loKyyazPIJbLiU9M3KQkrd\n+jcC\r\n=2LBk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"## Introduction\n\n[![npm version](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express.svg)](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express)\n\namp-optimizer-express is an [express](http://expressjs.com/) middleware that optimizes page load\ntimes for websites using AMP for their canonical pages. The middleware uses the same\nserver-side-rendering optimizations as the Google AMP Cache.\n\nThe middleware uses the [amp-optimizer](/packages/optimizer) component to apply server-side-rendering on the fly.\n\n## How it works\n\namp-optimizer-express intercepts the responses and replaces their content with a version that has been\ntransformed by [amp-optimizer](/packages/optimizer).\n\nAs the server-side-rendered version of the content is not valid AMP, the component also\nprovides the original content on an alternative URL. Server-side-rendering\ntransformations are not applied to this URL, and the original valid AMP is served.\n\nAn AMPHTML link tag is added to the server-side-rendered version, linking it to the original valid\nAMP version hosted on the alternative URL.\n\nExample:\n\nA valid AMP page is served on `https://example.com/index.html`.\n\nWhen the amp-optimizer-express middleware is used, that URL will serve the server-side-rendered version\nof the content.\n\nThe original, valid AMP will then become available at `https://example.com/index.html?amp`.\n\nAn amphtml link will be added to the server-side-rendered version:\n\n```html\n<link rel=\"amphtml\" href=\"https://example.com/index.html?amp\">\n```\n\n## Usage\n\nInstall via:\n\n```\n$ npm install @ampproject/toolbox-optimizer-express\n```\n\nThe AMP Optimizer Middleware can be used like any other express middleware.\n\nIt is important that the middleware is used *before* the middleware or route that renders the page.\n\nThe example bellow will transform HTML being loaded by express-static:\n\n```javascript\nconst express = require('express');\nconst path = require('path');\nconst app = express();\nconst AmpOptimizerMiddleware = require('@ampproject/toolbox-optimizer-express');\n\n// It's important that the AmpOptimizerMiddleware is added *before* the static middleware.\n// This allows us to replace the parts needed before static handles the request.\napp.use(AmpOptimizerMiddleware.create());\n\nconst staticMiddleware = express.static(path.join(__dirname, '/public'));\napp.use(staticMiddleware);\n```\n\n## Options\n\nThe following options are supported:\n\n   * `runtimeVersion`: true if the optimizer should use versioned runtime imports (default is false).\n   * `ampOnly`: true if the optimizer should only be applied to AMP files (indicated by the lightning bolt in the header).\n\nExample:\n\n```\napp.use(AmpOptimizerMiddleware.create({\n  runtimeVersion: true\n});\n```\n\n## Best Practice: Cache server-side-rendered AMPs\n\nTo achieve best performance, those transformations shouldn't be applied for\nevery request. Instead, transformations should only be applied the *first time*\na page is requested, and the results then cached. Caching can happen on the CDN\nlevel, on the site's internal infrastructure (e.g.: Memcached), or even on the\nserver itself, if the set of pages is small enough to fit in memory.\n","gitHead":"64a25a757ff6d2acc9a7d59ec718a025c713b63e","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.20.2/node@v12.16.1+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.16.1","dependencies":{"mime-types":"2.1.27","whatwg-url":"8.0.0","@ampproject/toolbox-core":"^2.4.0-alpha.1","@ampproject/toolbox-optimizer":"^2.4.0-alpha.1","@ampproject/toolbox-runtime-version":"^2.4.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.4.0-alpha.1_1588849686430_0.40031758841706977","host":"s3://npm-registry-packages"}},"2.4.0-alpha.2":{"name":"@ampproject/toolbox-optimizer-express","version":"2.4.0-alpha.2","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.4.0-alpha.2","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"f237a22aafc9085eef32d585d9b22259b01d5100","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.4.0-alpha.2.tgz","fileCount":6,"integrity":"sha512-CDSp5X33V8lSrvEqp0sBUgSMSqy2juizefwPeFIPO/4yDVqGBSzGLKdEPO6UJba5cWr6PmlgxMwG9rV+9BcVFA==","signatures":[{"sig":"MEUCIF4d4ajPBGltK4E7ifMVkL/6iubm6NyTsF8nxebr3t7pAiEA5/1wTcIGc7bR39VtRa7HGo9HdMr+GpQBtYJaI+OhkQU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22932,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJetWAaCRA9TVsSAnZWagAAx2kP/j8I1YwJVeuoQOD8w+fV\nHvW3WqOVtPZ2Oj4qusqyCStxX0Z6EWDMpalOq/McB3SiYkxtpJo5YsOE9w1s\nnYnZyibc5L1CyB4WToHIcZ9MZeiJIN00qZZvVHXtmIEle58e0Y4nzHZSZQua\nk1Y5/fwQUke77oKgBl21nx1IUYTdlNqH2ESxLGkyeesJJSl7+mvwxYecmOeW\nCn7BP+ZEs7sw/cKWJJITdt4G3thbR9gJL8dubcNl8AxztC3IZA9f3NsGKa+E\no3D4EZvtRTd5EOptUxKLkek6E7zXF8I0AEkmb+J3wIfAYln0X4GVCnVwQm6+\nbhqlayjlgP7u3zGUfQt5QHGUr7G6NsexAsXnVaZsKQsijAGEntkmRzDtGs8g\npPG8I0GK+7hLt0u/ZXS7lIFFRaVRrpWBZjmSyVBug75IeIu/YF98IY/6VPdb\nU4p/6YLmHFQcbvOPFul+/zMHZocukMZFItCL/UVeY6/hG4dvD0etZHHRgPny\n3bq0gSBMbKf2gakv7YwEefc8MqlZ/bn4xoKBu2XMDJoDxZN4wyxl/uNjQYBZ\nSMtbq4u2u4WcJ4yVZRaLjUwzcMkvmLBZ7V/kF8+oa88FiaEUDqzGoHZZxOuv\ni4ZoY/5lOqp2+puVTO6ZI+neUkr3PiZSheu73y1pfLuOlSmyxE7oYXHwISrv\nefIo\r\n=QvbO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"## Introduction\n\n[![npm version](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express.svg)](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express)\n\namp-optimizer-express is an [express](http://expressjs.com/) middleware that optimizes page load\ntimes for websites using AMP for their canonical pages. The middleware uses the same\nserver-side-rendering optimizations as the Google AMP Cache.\n\nThe middleware uses the [amp-optimizer](/packages/optimizer) component to apply server-side-rendering on the fly.\n\n## How it works\n\namp-optimizer-express intercepts the responses and replaces their content with a version that has been\ntransformed by [amp-optimizer](/packages/optimizer).\n\nAs the server-side-rendered version of the content is not valid AMP, the component also\nprovides the original content on an alternative URL. Server-side-rendering\ntransformations are not applied to this URL, and the original valid AMP is served.\n\nAn AMPHTML link tag is added to the server-side-rendered version, linking it to the original valid\nAMP version hosted on the alternative URL.\n\nExample:\n\nA valid AMP page is served on `https://example.com/index.html`.\n\nWhen the amp-optimizer-express middleware is used, that URL will serve the server-side-rendered version\nof the content.\n\nThe original, valid AMP will then become available at `https://example.com/index.html?amp`.\n\nAn amphtml link will be added to the server-side-rendered version:\n\n```html\n<link rel=\"amphtml\" href=\"https://example.com/index.html?amp\">\n```\n\n## Usage\n\nInstall via:\n\n```\n$ npm install @ampproject/toolbox-optimizer-express\n```\n\nThe AMP Optimizer Middleware can be used like any other express middleware.\n\nIt is important that the middleware is used *before* the middleware or route that renders the page.\n\nThe example bellow will transform HTML being loaded by express-static:\n\n```javascript\nconst express = require('express');\nconst path = require('path');\nconst app = express();\nconst AmpOptimizerMiddleware = require('@ampproject/toolbox-optimizer-express');\n\n// It's important that the AmpOptimizerMiddleware is added *before* the static middleware.\n// This allows us to replace the parts needed before static handles the request.\napp.use(AmpOptimizerMiddleware.create());\n\nconst staticMiddleware = express.static(path.join(__dirname, '/public'));\napp.use(staticMiddleware);\n```\n\n## Options\n\nThe following options are supported:\n\n   * `runtimeVersion`: true if the optimizer should use versioned runtime imports (default is false).\n   * `ampOnly`: true if the optimizer should only be applied to AMP files (indicated by the lightning bolt in the header).\n\nExample:\n\n```\napp.use(AmpOptimizerMiddleware.create({\n  runtimeVersion: true\n});\n```\n\n## Best Practice: Cache server-side-rendered AMPs\n\nTo achieve best performance, those transformations shouldn't be applied for\nevery request. Instead, transformations should only be applied the *first time*\na page is requested, and the results then cached. Caching can happen on the CDN\nlevel, on the site's internal infrastructure (e.g.: Memcached), or even on the\nserver itself, if the set of pages is small enough to fit in memory.\n","gitHead":"c2105027e95afd110e9f3b8c3e252492e3db5149","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.20.2/node@v12.16.1+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.16.1","dependencies":{"mime-types":"2.1.27","whatwg-url":"8.0.0","@ampproject/toolbox-core":"^2.4.0-alpha.1","@ampproject/toolbox-optimizer":"^2.4.0-alpha.2","@ampproject/toolbox-runtime-version":"^2.4.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.4.0-alpha.2_1588944922411_0.2605352812312205","host":"s3://npm-registry-packages"}},"2.4.0":{"name":"@ampproject/toolbox-optimizer-express","version":"2.4.0","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.4.0","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"ceb8541a918bef9fde65b3c1bb17f60e7bd7151b","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.4.0.tgz","fileCount":6,"integrity":"sha512-nOgjVO/PtsS+rluNlCN8o/1UdzpRQgeYeYJwR0+RioEF3xiVC2lyQw7LyP5zCEIGVYGFpZsSQchFKuudfck8ug==","signatures":[{"sig":"MEQCICEMWro+ON1Zo9uV9dzi3O8lGkCBSDeNZ1JQTUL66Y7oAiBvp+dWFOL2T4sEVJmEyZ50LI+2VVlQ77zRfXlShr1XTw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22916,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevFjzCRA9TVsSAnZWagAAjJUP/3KfWPu9Ghav7Vpw6cf4\nQlcyr/9PYSU9U6L43oHYFLLJstDi3tVRgFNgAr42lbd4ZcMuqQf2sXCjKznC\ngRLwHZyE/I8Aj3RREoMdK65ZP+sQdG6EwcDWWuH9Bg2ZMU6qVNgarNncdVBG\naJG+mrpJbO2QUi40Sd7Di7hngTq3Syhg3p57dNUk+2E2Vh5w38h8s/68thZc\n3Cyi0tfCtI63+DDB6rnmpmCh+iAa4ZsHhQGraYiYFMqMK28okG54ex6s9v63\n3yk/MFMMKhn5HssumGQ3MHrI4Fz4NFbHwe6j6S+fLjrNkSvmsW3pdzzjKYJt\nrxpEK8bsyP0RNEJ8PnUyg/2CK86wNa4sBBtP0VxXcMGhm9LJMB6hN9AeCZ0R\njYjL3AiJ6zEQJnaP32WG7SR38RkFTOBN/P7ggmYJvzad6/XsEji3y2TWfT/q\nNqvombkfIijv/oK/b02xfWK9FrK8aoEh7bRmshGSAK8dYkKZkvy0vTfz83BQ\nVhIPqsnqj6WKf5VdgM0PCy6bw77BOH64x6geSaHYGO8YOlH4oUkiNSmg/5n4\nCdIwKOvTTbz8CP6+33SxnzdiGJ7zjOqOTVD1ShDAvDpRkv7u61xuqANRKKci\no2pR8F/AOl3FG/EF5cgv+G5aa6SAGGPLUm4lxUcA9hUHNwo/Q3xJfKALc66H\n6foy\r\n=VH5r\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"80f09fcf0cf43cbc6d3f1ae9cbcbfb0552eea220","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.21.0/node@v12.16.1+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.16.1","dependencies":{"mime-types":"2.1.27","whatwg-url":"8.1.0","@ampproject/toolbox-core":"^2.4.0-alpha.1","@ampproject/toolbox-optimizer":"^2.4.0","@ampproject/toolbox-runtime-version":"^2.4.0-alpha.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.4.0_1589401843550_0.5081128627397586","host":"s3://npm-registry-packages"}},"2.5.0-alpha.0":{"name":"@ampproject/toolbox-optimizer-express","version":"2.5.0-alpha.0","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.5.0-alpha.0","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"2c0fa1838d760d170f18c2c3e343be833c98cc90","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.5.0-alpha.0.tgz","fileCount":6,"integrity":"sha512-aPsOFabzbirc7WAQPPPe6VY2eSAlpN+8VM5MCI7iwkJClYs++ukkxGrLSJsGMzJgAEvjrO24+hc05pyKYB3s8A==","signatures":[{"sig":"MEUCIQDmvX7GPUa9Ns3+UUaKdJkLlP1OufgrvZaTYOz6CFEK/wIgQ/y/ms7/KYhaJu87mRBIF5EigcW/O/vhpnq/SQEoCZE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22932,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJew355CRA9TVsSAnZWagAAoSwP/3/OKri4u6sgt32/kcyy\nSlCU8UP/xF2Z/lFY2sQEh+m+2V+VD6cog+fmKv1W85aZKvV2sx0aMOxwtrpL\n+MQNz8D4ZpomHv1PBp77qAp0v//5Itv52eo6YBqLNVSSfCwRA5vLIJckFtDy\n9onMHtM26mRjxgtb8L6WcGemlqRwLQV0VNt0IFW+AYqmTzLfG9mQQ0kBqjdU\nTpUA00RRW4tvSqI8UXlz+fKxAE+XODxvfS6kT/UPw3haasWIlhJ7cw5g0vM9\nK9Sl3xzXAGG4MLStpbeOEZuAbCqc7T9Yom7FBOBTykbl8rz/8jaPvHX9vEcs\nSxUW0Xon1TwhpUz+iU1LDWpMsTi+l9IkLYciGnfEBlvrMe05sLcA7Km+KvBi\n1LLCdxQccWlHnmFQAUllEGGpAAkKv8rpK2urTMauGiPUNy0zOnK4ZbDoKkai\nY72sl7IhTOb+/2FmB43Aw6GPepNA0NuxHeYch+DtUHmMC5vLEfW8a0UMJ/xw\nCNJ80oeZWGwQPCqBqsvbRBWonjyH3lA6zFGmWT5WKfoM+A52Rjnqv5YNkCOJ\nul/AO9jCVLB4WEXnzRpLk9kxZsKOuiZ290XJwIJJ9i67YmDYdU6ss0XjDfby\npCQh3/kQhxSK6UB1aQ0BEJNBl8Vhmbe2JaZlkG+wgzlQXsJYAhKVX3yJBMNw\nzGLZ\r\n=ncKj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"## Introduction\n\n[![npm version](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express.svg)](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express)\n\namp-optimizer-express is an [express](http://expressjs.com/) middleware that optimizes page load\ntimes for websites using AMP for their canonical pages. The middleware uses the same\nserver-side-rendering optimizations as the Google AMP Cache.\n\nThe middleware uses the [amp-optimizer](/packages/optimizer) component to apply server-side-rendering on the fly.\n\n## How it works\n\namp-optimizer-express intercepts the responses and replaces their content with a version that has been\ntransformed by [amp-optimizer](/packages/optimizer).\n\nAs the server-side-rendered version of the content is not valid AMP, the component also\nprovides the original content on an alternative URL. Server-side-rendering\ntransformations are not applied to this URL, and the original valid AMP is served.\n\nAn AMPHTML link tag is added to the server-side-rendered version, linking it to the original valid\nAMP version hosted on the alternative URL.\n\nExample:\n\nA valid AMP page is served on `https://example.com/index.html`.\n\nWhen the amp-optimizer-express middleware is used, that URL will serve the server-side-rendered version\nof the content.\n\nThe original, valid AMP will then become available at `https://example.com/index.html?amp`.\n\nAn amphtml link will be added to the server-side-rendered version:\n\n```html\n<link rel=\"amphtml\" href=\"https://example.com/index.html?amp\">\n```\n\n## Usage\n\nInstall via:\n\n```\n$ npm install @ampproject/toolbox-optimizer-express\n```\n\nThe AMP Optimizer Middleware can be used like any other express middleware.\n\nIt is important that the middleware is used *before* the middleware or route that renders the page.\n\nThe example bellow will transform HTML being loaded by express-static:\n\n```javascript\nconst express = require('express');\nconst path = require('path');\nconst app = express();\nconst AmpOptimizerMiddleware = require('@ampproject/toolbox-optimizer-express');\n\n// It's important that the AmpOptimizerMiddleware is added *before* the static middleware.\n// This allows us to replace the parts needed before static handles the request.\napp.use(AmpOptimizerMiddleware.create());\n\nconst staticMiddleware = express.static(path.join(__dirname, '/public'));\napp.use(staticMiddleware);\n```\n\n## Options\n\nThe following options are supported:\n\n   * `runtimeVersion`: true if the optimizer should use versioned runtime imports (default is false).\n   * `ampOnly`: true if the optimizer should only be applied to AMP files (indicated by the lightning bolt in the header).\n\nExample:\n\n```\napp.use(AmpOptimizerMiddleware.create({\n  runtimeVersion: true\n});\n```\n\n## Best Practice: Cache server-side-rendered AMPs\n\nTo achieve best performance, those transformations shouldn't be applied for\nevery request. Instead, transformations should only be applied the *first time*\na page is requested, and the results then cached. Caching can happen on the CDN\nlevel, on the site's internal infrastructure (e.g.: Memcached), or even on the\nserver itself, if the set of pages is small enough to fit in memory.\n","gitHead":"48d9b99ee4744e54eac1f73a7cbf05f3da2c0018","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.21.0/node@v12.16.1+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.16.1","dependencies":{"mime-types":"2.1.27","whatwg-url":"8.1.0","@ampproject/toolbox-core":"^2.4.0-alpha.1","@ampproject/toolbox-optimizer":"^2.5.0-alpha.0","@ampproject/toolbox-runtime-version":"^2.4.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.5.0-alpha.0_1589870201480_0.6908813353719823","host":"s3://npm-registry-packages"}},"2.5.0":{"name":"@ampproject/toolbox-optimizer-express","version":"2.5.0","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.5.0","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"3db2c173c8ac46d3980e2a3c510bfc91910ed7ef","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.5.0.tgz","fileCount":6,"integrity":"sha512-BtW47LMrIG5dPKt4EnmDKAZHEbPqETdsTBpvr0eOBL7QQO4eFJqbrpvzaVQrhu6nt5a2kCwGfdPQ/vuGAvgqcA==","signatures":[{"sig":"MEUCIQCn3KVpPylsZaSJgi7d9hQ/OhraalsBdQukqUYfRdTdtQIgL1GzmWintaCG35jaClrbakKlkgitJE8PorwYyOGnt2w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22900,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe0PmkCRA9TVsSAnZWagAAZasP/A2k/CWl8fkc4aYu/D+E\n0OeIeu36NZu+0kNRV+Wo+8jTvvqbRsQpWFVL0byym66cWa/MfNEOnUqUyJqO\nTDiTtJ0Ot6GuwVcDf3PjPUq4Z+nmIUZ3IAy1j0ky26xTZUpPTGtaxVAz9h5s\n1s11/4+C6zgBZ1MVjmPQ/ac5q7kWxtjWtG494cGmu83qInwEUAr/r1E3bVyL\nNL9lZLFQ6swzR6SPjQTRciJWL9WeJYQ2Gft9HuHelsI/Z9z6b/2pnonAXI4Y\nxCU8If8Zh3m2a5AAfE2aAE8i4NwTKQ2s+/9ILREHa6i1uqhADXHjOq5kVNSX\n768siwSJ+LIH2T8urxjnxDR3iXYnoUlW29ixZu+JFpSRrJCX56Fd48qtI+Dz\njHqnEXb5kbpdr8C5b3E+kADcnDr86gSOn4NdYzoSH37ZS++Rq/OkT+FMqcBh\nsD/6fJiQDeZnzxcDK5yaiyvrIFM8bjQIYVKBKQO47e86UsEFvXKNLjLZAjw7\numKi2FLKCYJMzOAPzoWhGP1/yNqX81YhwFxJ+/lodRGUtqAABG89MM2EHFib\nq52J046oK0m91cOYM7XIILOppsz0gDa0/hM1JAWoFwUBsXMI3XihWvrZHEje\ndelGDaUbmQmvHaGINetCqP+Lh0hixTnmbYLCuTMuv1+vjQr58jU4oZ1wmo/E\nk+Lt\r\n=Sjsz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"da4cca026111b917cd3901b4666a5997ef45a606","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.22.0/node@v12.16.1+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.16.1","dependencies":{"mime-types":"2.1.27","whatwg-url":"8.1.0","@ampproject/toolbox-core":"^2.5.0","@ampproject/toolbox-optimizer":"^2.5.0","@ampproject/toolbox-runtime-version":"^2.5.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.5.0_1590753699802_0.05956953918963426","host":"s3://npm-registry-packages"}},"2.5.1":{"name":"@ampproject/toolbox-optimizer-express","version":"2.5.1","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.5.1","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"e70cc8e517dec2c85800f891f954a96170ce54b3","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.5.1.tgz","fileCount":6,"integrity":"sha512-3F9r2ERrIKcKfdW1AhuQQ9BigpPJDWdXnFiOXp2unSaPvIomhfkJfi6cYFM37pG2XsNWesueumb91gMO5GtQ3g==","signatures":[{"sig":"MEUCIA44a5OpC0Atj4OzHNmmkv1u+HFwB7MYUB8tRwwOO5eKAiEAkpmUyPn0fx0JPZMc/g457sxEqhH8/8qjJned1JX5PqA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22900,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe3zq4CRA9TVsSAnZWagAARPwP/AhKTGOrWZ8dBvsxgBZ4\nHTF7uAA/g+7VlMasYL9HKVpmBalYK2ExpI7Xebw/H1czxNatw0gu9ERVj4qE\n0wId2kPwjWS5AEdg7BzqpRcW2/yLrJP9HQeayvQduJihSIoq00OhWxBc9mzh\nSvRdywARcFJDl7//WUO1Dzj39cBT+16IJKD4NJuiKgZDdZZdMlFEYTOHja6b\nhtUIpGgnOAu3W0XEIi8lf5uY/kK+VTr3DxrCVy9aEPAyZdh5N676QwWGGtHL\nLRpVCSCNuYPBTxb4gWp6lHyWnasc+sM1efyUzHXpcIRFlur3ryb2ex9o6XDF\n5oslOlHGz3G9Wc+qYpFEW9uq6ns7MHEZjEWYkDAQdX+kIWW0TWMabi3Jt0H8\n3ZAdaqEOdJHNOcTNOUg1sxAUhHdW5Kl+YXNiqfLQQHcl5MTKysXniLCBNum/\n70yS5ERRM8yM/lE7dPNZpGNzv4Zk8MYB2gbZs+yLNJdJvWcvBfZipMJLkUut\ngL0H9b6urTuIG+rY8lkeNFkqMDLklCE4IyR/OcKEjpdLM9IMLxCFhN/5jw5/\nmNuUEm1lCX20dFLPUsD7Q+I/NtBYteFsjEQssDE7A1Ahy9Wi2MBUQ/0dxWSI\n1/+MuFtWBUQug3NxRqJeiOlJQ7auj3bUKbc4d9pjSggJXvft3bj+UsnQMxci\n+NCE\r\n=SZeV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"f92ba13281ecf3e624ee8285f2deebee18d580bd","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.22.0/node@v12.16.1+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.16.1","dependencies":{"mime-types":"2.1.27","whatwg-url":"8.1.0","@ampproject/toolbox-core":"^2.5.1","@ampproject/toolbox-optimizer":"^2.5.1","@ampproject/toolbox-runtime-version":"^2.5.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.5.1_1591687863858_0.7928211764306694","host":"s3://npm-registry-packages"}},"2.5.2":{"name":"@ampproject/toolbox-optimizer-express","version":"2.5.2","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.5.2","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"de3f16a443300ede0de05bde266aef28cf7a4ca8","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.5.2.tgz","fileCount":6,"integrity":"sha512-PQF/k0eq8EWeQsKjIyRaZ3s+yEiams4Bk99n1khahjNTVchSzdNnnmuzUCy8KcHhTJom3bTRGEOM2D8+FlH/ZQ==","signatures":[{"sig":"MEUCIDQ39C9Winb68oBvLkMa4CuHMthLavxV7w7P6xzrejSqAiEAkxha2WUdDPzN+6zz+RF5Jn4pZONfxWpDi5A8XbqQ4x0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22900,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4nuwCRA9TVsSAnZWagAAaz8P/2VWiI1xeiXj7WG02xly\nMK0spqeFT0tVYv9Bi2kxHe13U4cMznI51G2oqwBs3tkLGG7X61rUY1KMi52+\nPRvkiADR2TtmlV43UvL2W2Ztf6u/pG5fMoCvznP5NYBbWWApbFV9hnc67GyA\nBnGkBRuGGlRsnTJJlxBOx24jRmZl89UBCB+/Rsf3i6/mo3fw8d9HOmq4zN1A\ne8jTotO2IHqAY+hCEBa1y6nflPr84Z2InW0BdfRMa5gu1LkIIcW7PAXa7ajE\ntHSU64nv+dFhi6pJHp1QQd2dPbeyBDm+6TXgTx7V8E2ZzXBn88JaCpxztMM3\nAgXZAwUFHGupMiESPypIcIkAG0Zj/T6No03aFR1aVoSlBm9a4AAx40qLP57l\nG2Tn356c8crRXgmmh/HlgZcVy2WtoyA/YbnTRlsYyVIhnuL8JfjqtXpiIFjK\nCYskEFkMHRED2CK3ADyRW9ANd8Mj46RZYXsqTj6AmUQjdtOWmsw9KIbxDDg1\nHJGrVp0lyzXPTErN4b0MUP/Q0L4dtw9gX2hR017kTKJgG0Zv7HRuL54zIoJN\nnfWvo1mwnv2yy8r5pmA76dPSEh1aydpftY3+8jfQ98X/qZ49AQclPjhv2P6k\nVsuvYUrKag4sug2YZxXJJ8/PcATpa3FUl9mmmWfCNR05Ju1AzeWeU3/hw+uU\nnJ1Q\r\n=5WZb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"0e67c978f403a0f68d5b876010d5eb1a5ae205d9","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.16.1","dependencies":{"mime-types":"2.1.27","whatwg-url":"8.1.0","@ampproject/toolbox-core":"^2.5.1","@ampproject/toolbox-optimizer":"^2.5.2","@ampproject/toolbox-runtime-version":"^2.5.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.5.2_1591901103540_0.34518142006238284","host":"s3://npm-registry-packages"}},"2.5.3":{"name":"@ampproject/toolbox-optimizer-express","version":"2.5.3","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.5.3","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/master/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"93dd103f45cdb19b31dcaa3a0b1993d53c9e83aa","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.5.3.tgz","fileCount":6,"integrity":"sha512-7IeFGRYDxSyNFX4Pi76XiK4RJp+YcUyP7DZpXdDKL3OaKD13/tW9NBtytVTXA5dck7jqVNr3ueDHuAsvaRTkdQ==","signatures":[{"sig":"MEYCIQDSqmFNSUHUrePKe2Bz06N0r8YKj+TTyUKIrZcV7UNW9QIhAMNnMuuUD/BL9e9NYbz8yO59QKrLvEjo242wvoL8zoFX","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22900,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe5yebCRA9TVsSAnZWagAAEIcQAId00zcaGs4HOGW/e3Qq\npZguZonhxnmuM+Sq++gEtzBrTs8b6wEUdFrVNbLOB3x9+/kPGgRv8iIEALnv\njpDDNEJr3B7GbYPUpHMxb508B9weWhWsYooqD4nRxsfPgCvQIH5VhnVvwHnS\n65O7aCsrfwPYhRboqxlYy8dr631XBc3MW/Zx/o4i3MduH0ZdihaR4c1qDVQO\nZcRrBHhizuWCsi4RXtYGe//MOoMdFESw5O++iVDm4Sm/QF3VA96g6LoxgT2c\nCj7HI/hkdfnbzQ+LjKuZ6yFFdyNhu8pjH2oyAUlOBdlRifXVIgeCIYUh8cfd\nbF/e8sZSvFw5h9JPW2Q0Iop3CKymNem5V/4Y5htlRu6MqKgLt/D6tarCke+v\nG8kPjkUBv0Cp2GxdOkURzwtvcP2YLbaIcXpMRLYoSE1rCI7h226n2vBetdVL\nWx4uWLIjiPv03v0ijb0KfUnCLPTwGTAoFQjjhu11ufn8zy/hl2iQc7maJ8Uq\nBc41/oMeYKZDby8EruqU9Xg5yki96J5wAQSSgL9iZ2u/xs3BmAYDfhP78L9L\nZNo3qKtOpCAGk5OH3ufVBfHLmOslrtTkKqbGEv2u+rYZV5SMvJ/ydP9cLr+B\nO7UTCYHvpPy4XtfNVONzzW9EhK4JiuPy3nAtSlkOrY4hYjd6/JTpGXqtUCPq\nKwvp\r\n=ykn1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"bf9cdb032c1c35e1c3a11ed288c081ef7631f239","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.16.1","dependencies":{"mime-types":"2.1.27","whatwg-url":"8.1.0","@ampproject/toolbox-core":"^2.5.1","@ampproject/toolbox-optimizer":"^2.5.3","@ampproject/toolbox-runtime-version":"^2.5.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.5.3_1592207259333_0.18059929530677254","host":"s3://npm-registry-packages"}},"2.5.4":{"name":"@ampproject/toolbox-optimizer-express","version":"2.5.4","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.5.4","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"cc9abe1fb93927e182a4a19c5913890b43f360fc","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.5.4.tgz","fileCount":6,"integrity":"sha512-jY/glwD3vXBDci9G04BZT2PGug9w7OtBHiWv9VBk+xl91JTKoHg/MPmfSzTz3U7irU5YhqAO9wA6ceOHD42Law==","signatures":[{"sig":"MEQCIDRMqjFBbVH4CCuixs1b2kstScKIaH+bk9QNrAM6fVYNAiAmq24zTHEbm5PJ0mN8fmIe2sMVkyTRroBkJnurXBsXQg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22898,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe8QvyCRA9TVsSAnZWagAA7fEP/R0fslcOXhAkr6noChAP\nJKwdzluEpV3cbXszS8+KjookNVdg3BB89BNvca4uLLXIA4PeMOXVY5ItInA1\n5zuT4aLH6EOxw+z1e3hUiyBHvr+ghMWPyOiTY6V7kROSF7RJUj0fEOKC5OlD\nMIGIu/skyNVI1lFv0YwMiPtyuVES53z82j8ilesGALRO3Cn8FDG5Qey6GVz1\nrqAnTh1AYqlMUaxL2KlnfbP6wg2CEHwa4ZvHKqCHUHM108F/Y++crIjc9fmX\nvy8MJNbwwvvW5G5nmF9oMlv4YqYSbGM9a76rgLyiVNB5iulPq44WGyGGPbyv\n6WDhC4/+K4pvGld+AqjIp4av4nZnv49c6Jfv6xHQcDOddxEYBZSjPEGrev7z\n2lI95Eyruo0J/B2LRMLA5q4X/S/wRg4+Iv7QSLjjQ1mZn0RA/B/qT3v41Qwe\ntaq25AX5rOmr0Ydl4HG+M7y1ZLqGXhXZShnsQkEPRPzWc2uLtuGgi5xMIBWe\nMBaUShg5SPNO9YBWI1FciPyaGpyqcHgLNWMd5eS1senyFGuAxTVOf/aSncVc\n9fU/ZH1KqpU5oHjfD+Vg7JjgX3VrzVNLt7ZDgkXML79syXH1Rl+1jsAH48dP\nVTYTOiuG4sIKVEPXGwClJ0EzQmma9pGxrBxi0D7mV2MVDUB1+UrvWjGiVv3/\n+0tr\r\n=UPRs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"c194eb829c2d0d4cda21c961107d73bd7528f53f","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.16.1","dependencies":{"mime-types":"2.1.27","whatwg-url":"8.1.0","@ampproject/toolbox-core":"^2.5.4","@ampproject/toolbox-optimizer":"^2.5.4","@ampproject/toolbox-runtime-version":"^2.5.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.5.4_1592855538332_0.4650305414605149","host":"s3://npm-registry-packages"}},"2.5.5":{"name":"@ampproject/toolbox-optimizer-express","version":"2.5.5","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.5.5","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"e1a1bcb47137eae1167c64735f3010175534577a","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.5.5.tgz","fileCount":6,"integrity":"sha512-41KMTrqndbUWHvOblLx1MBIT0SoNfXFc35trjGyenaK2ravBCayksXgxASq2slZTvXYJUrgHuxNY3htRb1ltfw==","signatures":[{"sig":"MEUCIQDdOLFipYveP5e46m7pdnkr4oEm3+fNKA7a42IZaVS00QIgLg6LDpKOAI3f57TfyerNiAhIu/bCaFYWKKpeo07pHPI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22898,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9jaaCRA9TVsSAnZWagAAEQcP/RmGGIFkpIGwUI9WzVVX\nbFpuBEkmCjgdqP4I1wx4vPb8UoZNXWFFf8XVHcw85j+PZp76+rCDPop23zh6\n8iH4tV7iOnYAHSHcnsD3n8xwUVluyXwsWrGei4jaIEa6UB+sGMxWYcRSYMwY\nV1xXk+U3zADmE90OW5uJJ4HqFOGt8g6X6zTnqFOEP/IYMKPwDg/ns064epCM\nK1iBerp/jEWF0eT9UPr+U3MTpMH9hHkDQCm9J1nB+fu95q9ZP+lEWdUFrnQJ\na4MQxmvNjLdoqI192Tgv7wy4b5blDLPWbD4cz6a/FhBoCOVBH0zNAJbMrMH2\nWFx7C7ZfrTJ8Zh01wHsPUM3v2o5g0TCelwVfhu93Ah5JMaQorbJWMBHmtlcp\ni8vEnpD/fZYjvD/zx/H4T3pHfihjuk5CoZHNM7kxnHlwS4T5oE54Eg3M09gC\nztw7ynHlQCrhUq2htdNcunBzFNuGCpIFIhUNH2dkykATfY2EYxY+XGc7pgoe\n7+R57Pmqri1FxkzlKvcsIFjneQCuK1zhh2rcvtp7GI9XPwaV+MUFlEbXei0T\nbGilURvIvSNX7OXcFcvV9gqcTusrKk/uAZ6EC1wskQwMwz88Bs2TtVDcdsTT\nt2pKsxXUHeOfGfDk2C5zIyHJBA9s1QoEaJSJEROfnEcR2zAklMsLSNT+s4i0\nSM1T\r\n=/J86\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"2c10143d29eaea2b98307ff0595e7b9beedbe96f","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.16.1","dependencies":{"mime-types":"2.1.27","whatwg-url":"8.1.0","@ampproject/toolbox-core":"^2.5.4","@ampproject/toolbox-optimizer":"^2.5.5","@ampproject/toolbox-runtime-version":"^2.5.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.5.5_1593194137906_0.7690994783647822","host":"s3://npm-registry-packages"}},"2.5.6":{"name":"@ampproject/toolbox-optimizer-express","version":"2.5.6","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.5.6","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"e4a1875f50f1b2210b84f95f1c67c7fc3a0887ac","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.5.6.tgz","fileCount":6,"integrity":"sha512-SbN1D2NIyFfCH0Jg19adLdSZClYfT1JKw2ovDyUhtssWmGqFSUXHyb3UkZNUI7ora1J9paVic4Bq4Qga9kLJGQ==","signatures":[{"sig":"MEUCIE6GKy5f+I76bTBGLk+KzTHVHNL6nyhxDVLTGV9CC5TVAiEAxaEYms1a23JYePfFqrtOM/zYNZgmBdqqAOKzudD/nUs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22898,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBKl5CRA9TVsSAnZWagAAYhkQAI7fMHfKbSJCzfzgrmBd\n3lLlsgxTbxaABlxL2hq71n0DXXqVypGwgVT7Fn18pMSNoDVB6YekL7Ep9MFI\nuVt3PTM5UFvLis4ji0313g+6fbh8yVOBljXglG6g+65R6fqo3GGJsCL1iuy5\nnvtc9TqNv86g+nEJ3T56PRo3LciY/T/pxeyZelzFLlOGufb6WaDxfCdQwf3y\nGuz4ZZiAqtYrMdwsovUqwHIQDDlTznm2dV760mMhzwK26xTW19mTdQi6NPCt\nToS7RIZgrcbwlpsz93pdfd+QrkrlBzM4qSZet/46n8xtloBMhdZPn3edw3kf\nnT2Zh1vZbM8kJtLTb+tUfogeombNOFEClURCS3+xuepx+FgIzhLR3UvMYaG5\n7PnZAcXLAYpqn9YVsTf7b6LtWJrT0rqby53rH9jQGDMn/zt2o7pn9WMr53ID\n2lFZdTbhFebNBMN+hTw7x5TfU/DY1yF+DUTlsvoKNR2Zo1aQIjkmCo5dgScu\nju5CnVSlgb7d5cADIyUt7zUDQ8CK1z23Lsu/o2jhEgx5R4cKAR0G8JwvpHsw\nNw/xu4KOH3i5P17i9wUjgga7WyUnQ8meGibUeNj8uKeGaIencVNJfmSyL+mC\nV+p3yxxlz+unMBH13CxCfO/BbBtziKqh+6MXwEzmWqfRfM2hpOvqYT227N5V\nUQzx\r\n=Q8S2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"f756b54ffe76e288ae7f62755a4338183bfd91bf","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.16.1","dependencies":{"mime-types":"2.1.27","whatwg-url":"8.1.0","@ampproject/toolbox-core":"^2.5.4","@ampproject/toolbox-optimizer":"^2.5.6","@ampproject/toolbox-runtime-version":"^2.5.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.5.6_1594141048778_0.09438841840151135","host":"s3://npm-registry-packages"}},"2.5.7":{"name":"@ampproject/toolbox-optimizer-express","version":"2.5.7","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.5.7","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"b931a818f4b6dd9b86e5bf80a8922d8c2218d6f8","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.5.7.tgz","fileCount":6,"integrity":"sha512-LlWaE3ZdSLTgcymIdh2ZSp75dgezuhlUki4rH5DdfawcZsI4wAf0JsEx3QfdcX59zxwvvukJDYjgopbM/dcN1A==","signatures":[{"sig":"MEUCIFZZmGxoX11ted6PWsQF/dK052XYZMxoShPKEl7AXB+GAiEAipdgadw76501EARgE2gcRWC3E3D922zfnRCe2dv/8iY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22898,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBYKNCRA9TVsSAnZWagAAL+MP/RseabYCZCQoJYxExH6C\nAs46TtMQVuxgtCXszmY3rDOK+Jr51EUnYvVf1Ro98XXPANpPD/RFUM09R0H1\nVwtQPdQhoYfCghOMOEn3KwxNGg7HEPdRZ2CHoRaQHW+tuO96Kcw+XPa9IAyL\njTPI95E4Eqrh97YxV5haTeVtzC8i8tMXx2AmtLPaQjx127Jl54s/gn6cYnjm\niO/+JEtQtjxksdaHokIZkiZfvmB8+Q3X71iSjvlhk99lDq0cIy0w2RAlJBl9\neel9MQ4dmOb8RYS9uRXqv/W4MkdhJ7EBAduJbXZC4Lu+RwQz5u5DlXEebfD8\nMKJCCwM7cYWOjuMScmpb2RLwkLiFyfbVK2suMwerZSSY8N5vE85I0AcgBenv\nUFTczmfLoNBaCpK9ktmfZznGYm+iZ09O0Gfx2zUDO4rkOyroTJ/M5KTkwGjg\nN1nnE7Mxtko9//fj9MhtZ0fKOalZEKgyUPl8KfGiwylnwokaDkOYrnaOh4fh\nj5QM17AA+541FA53fMp30yTywPu1N0oVIiok39wQkIcCV2bP2iPZbtIXlWV7\nfL1pk2A8chIb82BQA86hP7/yvtGuaEBZUQgP7dG4bAqShcXo2fXRKINApF+J\nMHLNgTB4UEtUaa1BnLXl8uEdzDZ4vHxoyDTyM40SrhiIm8e646DDR7p9wrH6\nIQRM\r\n=AEa1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"73647dd60013f39de32d6116eaa1403a82fd29d8","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.16.1","dependencies":{"mime-types":"2.1.27","whatwg-url":"8.1.0","@ampproject/toolbox-core":"^2.5.4","@ampproject/toolbox-optimizer":"^2.5.7","@ampproject/toolbox-runtime-version":"^2.5.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.5.7_1594196621076_0.4815965002823077","host":"s3://npm-registry-packages"}},"2.5.8":{"name":"@ampproject/toolbox-optimizer-express","version":"2.5.8","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.5.8","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"663f725ec9e7c6c5ae3cb281a8b85201967dd47a","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.5.8.tgz","fileCount":6,"integrity":"sha512-98XdCByGblVO5J2+IT4wGtR6DxE1nzLhT4OhxZcdDpTTCKROVGwfmAVoisk7hB1J3RAC9WbT1zAhnzj6uX1p3g==","signatures":[{"sig":"MEUCIQDtOmLjpiisfiA1p1BLOq8Wv3aUxw/7TWk1CK94SIOTIgIgDpE/ZBCUZrcxhrg1fxrIIGz8ITh+aE1Ek0nZGRLxJpI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22898,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBYy/CRA9TVsSAnZWagAAFa0P/3CxMtpxSrQKw6+C9wtK\n7oIeqjUXO/68z2hbo95cfx3tu0x/1+FbPJ1lslkqTyGEktLmZ1dJOFjBxQut\nYXQUiJKhyVQm/cyHXPzktdXp3pFOh9K4uTURCzB+AsuliZCPQ3ETYnliy7n7\nHEYwlxpdk3LVSOF+yzj7Uo7r4cimLjy2bV0jPPo31xXW81O8k1KBjsT4aY79\nviZBNB2E1sNWon0EsY08CVl/3dAyzU0/O63T82t6vCsHMTUaFJfd27pEwz2F\nV677kfLvCUc0J4mF0WGEi5fGTMgkTE2P4IJgwbqNHqtCAPcwL/HJdz/4dviJ\nCyyR5AK6NDB6TPMZe6xDUpP+8elvItCerd6sN45hyjgbTq33BiTgXiaDnI6V\ne2B7pO/gw9C+UE90D+CjdSF2zXP6VV+toFF4N/u0MZL0KpqPa+l3Z0o0TSRR\nL28lu+uFMMklflI4+d6+HarSOfzVk0B1HbLWHtwtedq6X7niTeGLVL0cfIG+\nr93iOT9NoiWRYKduT4knAxOeHGsVn1PXczU3OT+kHLWPrd0OQk/MowFoHRdP\nOsZKbD+G3t5fffUdpHnhMp+2JvvbxTlgmotY5vIvE93j4A4//n/BL3cIUGG/\ntrRgMaBzn1XyUN5T10U5LJHzZRLcfmeqtA3KAtbS+Ate1ddxRbSKwHslhLqf\nzex8\r\n=R64Z\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"1165683f96b5de148f5756482daf95c1eec615f4","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.16.1","dependencies":{"mime-types":"2.1.27","whatwg-url":"8.1.0","@ampproject/toolbox-core":"^2.5.4","@ampproject/toolbox-optimizer":"^2.5.8","@ampproject/toolbox-runtime-version":"^2.5.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.5.8_1594199230807_0.47649826118237226","host":"s3://npm-registry-packages"}},"2.5.9":{"name":"@ampproject/toolbox-optimizer-express","version":"2.5.9","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.5.9","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"69ab1f98d55aacaf7ced8828fa4cbc188157977e","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.5.9.tgz","fileCount":6,"integrity":"sha512-smHBU+Il62llfQO/ZujfsNn9wqbVvKygiwfyIGi+1Lu/GQsPoIlLK3VwRblnXWduUoaqM0Ng3KVG5QlTR+aGNA==","signatures":[{"sig":"MEUCIQCoQXozqqekD43c1i9fUllBe7KQsP7FK6SnEq70tay5AAIgIZdlEiXedrZfqBzbQWPNY/DpYzgMhze53WOTRG9LuIE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22898,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBbpJCRA9TVsSAnZWagAAOlQP/1CRhN2O854r9JU/w3+5\n4m+XdXGtzl+GMyuyzT4+wPkT6JyhpB4/0h74L9V8+k2k1Dk3QTQ3YtDvMe8Y\nu26tos1yAG+CjKFY1HpITD+8+MskwauF+LpXnBdhL7NA+9FlFaWz+ts2qxaw\n1jfJo18Q2Fmt0yhaDI3Zs/df7wIMFCBJ4GCJXFmzPmTVXN4+zzl/eToue91e\n5oDZfqrlgEyNgGc7pVUe8OluS/rZW28C3gRdtUkB/09j7O2UnidynvkGEBv/\nsC3FptKu+aV53pecjRTX/eF4j+3bmd0z0+atvZZH//R/lraVShkEhETQ76uh\nkl4t1QOcIGVomIwlrQpR02sTZ0x3Mgg4eoOfCx9zibGODsHA+x+OgFFt1Gwu\n1wsDAn0PAZvR2qaiGibv931GhmhcKOnrMdAyVCWrVAqAorHddOK3hwslJ/yK\nroN95ndzdGvfG5SUZxM5RxpT5sTUVeT2Q2aKSLk3vBsBnN2plDeF7uSBdvwL\n5sJdRKUZmurZ6d8pidhpai3TsZVz8gtBR8M9RNX8/DnGMwdRuN1nx0ub6EJb\n+ogJi1SuEKC/R7oTcjeudgXwJ/vygawbpfNnqSFsVcZZyoI9KhZJ3mCnJC2s\nHgzKxiTC+2Oje4oEL7Qi4lzF51kOEbajHB+O8DkPsbrGCJVPHhtCszb05ABD\nzRHd\r\n=8M8c\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"c5eed658dd3479ef8fca1e963109092f380f5633","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.16.1","dependencies":{"mime-types":"2.1.27","whatwg-url":"8.1.0","@ampproject/toolbox-core":"^2.5.4","@ampproject/toolbox-optimizer":"^2.5.9","@ampproject/toolbox-runtime-version":"^2.5.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.5.9_1594210888982_0.4312122568442043","host":"s3://npm-registry-packages"}},"2.5.10":{"name":"@ampproject/toolbox-optimizer-express","version":"2.5.10","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.5.10","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"fed611b8e2c945a9ea4f82cf9f8a80f7c2960535","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.5.10.tgz","fileCount":6,"integrity":"sha512-9pr6AHKa0E77GuCEnbOKtFOM3zgaDpoudi3VCHoL8ltevtjmcYTH3E0kOpQ2N3gpxYNCgyWsvMXW0P7YfSc5kg==","signatures":[{"sig":"MEQCIF74B2HAqKLmdZO5mdTbrFgvG59zterjvEd9yvkBJOyJAiBWa0loufRBd63UZ1odjQACT+ZRlMSWs79k0rK63rqorQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22900,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBb9hCRA9TVsSAnZWagAArasP/j+zHia05FouXaemB28G\nW6KEaOjEC33CxgaGnE8zhwdvD+IVdPfru4hmvJnCMM2aqfHFf0QBfojQ3OpP\n96/Lpog5IpFomRsr7xBa0JxaUZB7zBrR/k4akfzp4dcEYYjpverHZmvyRqIm\n589eXf9Q0VVuxAEHh8pEeP0ghpUUYXeCpKtcyYp2GjD1StvPzxJqbtU9YstH\nWP4RPoSeo91tvhZgn4kA3u70m9K8gAfDf3aT2I/0MAtm2TzItYRHd0cyZj1s\nB98buUTuYrEspWeewd4gz/LZQ5FGxjccBIpJGiAYKqFfV8tXKutrp/jBn6LD\nBSDy0NhePpb7lZUZu7N3aelZvlsNksPo8/eKwsEP3KDeDnN7GWw07qEXXVoz\nqxuf3Ad4wzgcnOjf/Co0sOBIVsopIas1m2dhL9PKm7eZiwVqKl2uY3v3cDrk\n51f6jssBrPGW7A5da0CCuyFh0D+a4ZXSEbFCWPyr3wJv84voQyQnC67r6FkP\nJwGpIOX8RKIjjH3SGjQO7AEqe56hSLGPw9Q3MqTSzdcvXfWc0VQzelQbuHog\nhsKRRtTG1WKs7adi1XuaKb5cZEnX1tlNjueabdTHPh455TCdOMqbOxcsAHDX\nSunGkPxikuhkc+Lg4dcWrj3OAQwVe7T5OdRA59xvI1j3Zg7H0uPkrrGOrKCk\nLotQ\r\n=qVIA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"381ff5ab711f2560ef222c28a05f17edf18f3cf2","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.16.1","dependencies":{"mime-types":"2.1.27","whatwg-url":"8.1.0","@ampproject/toolbox-core":"^2.5.4","@ampproject/toolbox-optimizer":"^2.5.10","@ampproject/toolbox-runtime-version":"^2.5.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.5.10_1594212193037_0.9478660300935304","host":"s3://npm-registry-packages"}},"2.5.11":{"name":"@ampproject/toolbox-optimizer-express","version":"2.5.11","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.5.11","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"07cc1389d376001646ab6e004073d92d9d724ea8","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.5.11.tgz","fileCount":6,"integrity":"sha512-ExV9eAMoAdEiLEtuJ2dMvQ+RJeLDypmYOc+0erHNYTM6ht4DYjcoWxFQvb7LDrsKo8y+75X0aGm23SS7Wl59vQ==","signatures":[{"sig":"MEYCIQCdds9JILl5iTO2xDBOYN5ETnwyS03W8+ZTyjW1MVVS+wIhAM1ClwoM/7sVtWWRsCD60r7/xp04qeRBLFUvl4gS1twM","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22900,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDZ2+CRA9TVsSAnZWagAAhfUQAJc4+rrRfGHzX+Kpx7at\ngOm92hszh9pfqnwjhlHDOQY8NbD8j3vrZfWwO0YUGDooQca2dLK7s055dT89\nXbWefPm80UFBXMJHIgz4gO5bQMfPxry/VSA9R6zVxBP6oeKMolibf7fxYZ5d\n1A7WDxv99BRI0blrQx5cD5paHTtxPyfcmyuo5E9v1/wFStPpiLVQ8pt2Wqhp\n/r7DuK1szSHwngPqcb9QIkL+RRgdDZtqZ5JaaFO5TLTkGYhViEBy6HLtpMiq\n98ORFwxHjUGUYUABPJ4fv0jLS5gPctWJdl/x0cccDqIZibqqRHlnuuvpQFJT\nAnw0w8kqIasdqfAmh6QqIhj7SZggLNI/Zgg+Qt12ifRqe/q+92qYtEAlLFod\ncNYdy21iEyJGHklGUcOV+UIEjB/m6VfomwiRZrUg1gEf+WZV0G5qd6nfps9A\nDHRw+cYLLLMARF7Zml0EAKdkX09KXByfHMSRnTZB99gPiXhTzj/wl+2YB2jF\noAZJJ+2rohbLN8cHtoxhdulcZ6CYQb81hE8gz0kXKrjb4k5wkGQTD3OJEFZZ\nkZn1ZmmWE9GpsvOlzqZycT3HM5QPWHI1ieQrSqH1pyRFA5ImhomvAHEyhizv\nocSaY4KqQQIjQffbBSMUSd7yItmvv159bHtacjDMl/hphdUCOw8AmiwHHbQb\nPfOp\r\n=GV18\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"f886f72aaf198efaccf2f1a0e178c05591715bc5","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.16.1","dependencies":{"mime-types":"2.1.27","whatwg-url":"8.1.0","@ampproject/toolbox-core":"^2.5.4","@ampproject/toolbox-optimizer":"^2.5.11","@ampproject/toolbox-runtime-version":"^2.5.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.5.11_1594727870443_0.3397739847512531","host":"s3://npm-registry-packages"}},"2.5.12":{"name":"@ampproject/toolbox-optimizer-express","version":"2.5.12","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.5.12","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"1899d31c9001822a7f90c50bf39f3901fb38fb9d","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.5.12.tgz","fileCount":6,"integrity":"sha512-dTPw3KWGiPsQLrSRAICm5A6iZETrELCDoduL+Bposc6GHCw7RTlBjzrJ/kaRYriQsvC5WIOKt4O/G1xs43uBww==","signatures":[{"sig":"MEUCIQDtA6yoKvIDHcj+AEUGHbdu6kOC9UJ5kmnwQT9V0o7OwwIgCKLzjxE6VAt9TUvvPUklQkViPWWBmeE2BeMU/Kp7dCs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22900,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfD01QCRA9TVsSAnZWagAAlbsQAIngKpvz4qZMUjW6IvJV\n/gFCpCGaroj7ExBYNBzopQh9+s/iME/16AAZltZGMEqAtXTg+i+LMJ/74WQc\nfGyC+c9FO8b5z6howDwCwrW0IQmJ06DV2aXNrMZ2QM7Xn0K7hsbSn1KTmYn2\nRWLCLxWfZkDrxRW7i5JHSPbL9bEDla8MrEjN5+9DtmpbkyeBCkmsJhtH0RHW\nD8fO8tOwRZ9+gEiQ9YgwJB1IuJKDXpDLmJGlV2q5jCikLQLFbIiAsFcehgI3\nnTZSqmUPyWzdAa/DkE6OUqoX8dTunAQOsmdVRHgvtgOnpXGnbXNSqmaTFayu\nyeTJya45ZFET7GMHlxyHoQ18RRE1fW/HscIeGhJeHSKNOd6bBjUG0MPhj9PO\nEvuW9zna4tiw0HF+DU3kW1vP+YbgLBYq0Eh9ottSYJDnDRBYRmYB7nmXrdU+\nuKTkQpVNryOxI2BFF0rq7wihPFBVDZEkOodtGkxTCaXxo32Gqjue6eyT02LE\nFVKJwRX38Wz8OsCJ6L2osG92W12+z+2bzjKBICEPcdUQD4nr+KSt/zom1igQ\nzmixhCqUTToSJGDhum+c18pkOTaFQj8LJ/W4MUhp+urgvsg4hdMVird1wips\nRvGIlzDeH8ZN6zF9Fy1pDTNNTlzkYJcFbr2IRHmRxroQWj9i40aXhAdUUKQy\n+xeW\r\n=6cMP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"19ef3dffbecac926ab5f60bb4c041f258e350237","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.16.1","dependencies":{"mime-types":"2.1.27","whatwg-url":"8.1.0","@ampproject/toolbox-core":"^2.5.4","@ampproject/toolbox-optimizer":"^2.5.12","@ampproject/toolbox-runtime-version":"^2.5.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.5.12_1594838352296_0.25177985720134677","host":"s3://npm-registry-packages"}},"2.5.14":{"name":"@ampproject/toolbox-optimizer-express","version":"2.5.14","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.5.14","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"7e33c20a2144354fea974a150d23985c25b24282","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.5.14.tgz","fileCount":6,"integrity":"sha512-WUDiESrizoXK6SVubln2XgVxmzN13Wlf0zCEmnaVO/jXKRoUjHs0VDK7BDaTJQam34ypqtCyXi52wNjBeeUcoQ==","signatures":[{"sig":"MEQCIBId2WRjSznr6ICc56WPt4uqNH3KJC3i0lqsGSGJINKjAiAhgK6wjpDaCY5YIjnorpnHaZd65KCkmkhJeaxacHrg5w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22900,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfGoTBCRA9TVsSAnZWagAAEGYP/jaLSygciXVWXEtZ8HbR\nhWCy1O9N8gvwaAkRYPTQhSqBT+KMxL6/ysvWaLBsnE/MFRAZ2B1qG/H6zXqY\nIS9nsgnyDXGdIkNlY7HMWV7ISlS/pkoBfQcnPI2MajYayj9M5xXKliSYnQfS\naX0M95/JoFZKWgtt0k/YgwfhOdyK3emoJ70SS+g/wo8h7854qsY0qMXL0mDf\n9mLzDIDFOhop4FXXZoIbVapLCttTLpeL6Wo1nd4tu1uUBOZtm3CGMSeY3lVV\nVOvU6hwagDm2Fbt29qnecdNJN1QJnbAkbnfBY3SHt+TdRbc5ulL3YylgBByl\nJMs7B7+yppKNPfgkpK+f//82hr2b4TsZYcObcHZpVw/PDnVp0W2o9EnzvUUR\nww+A+yHNJKERXKrR/OswZ56Cz8z8iMvGsYuoPwVVlsOu9KKA7Glaq9h/FR7y\nTR+dKDtNfIlF/k7MEklX8qu90hiSfmskRSuGpCWpaNXIW2k+EOoXtKw9qf/y\nf2kGrWGii3TmPcwdlsTwijmO6Gbmiyil6ETku91lJG/xNCnJIMdLIrVATHFS\nfZ5sUd9waR2CA03bkCSLpLwElTeiG1Tg/4ZqqON+saU5GXtgGR2ILSAQ6V65\nW69xuT7evdi+9iuPsK+ybRH1SW+us46dvFfWubUBumOpI+h1w76fB1zGTw1b\nG8tM\r\n=YzPS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"bf92d77fd1f53c54519bf8bed2be05b0bca26004","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.22.1/node@v12.16.1+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.16.1","dependencies":{"mime-types":"2.1.27","whatwg-url":"8.1.0","@ampproject/toolbox-core":"^2.5.4","@ampproject/toolbox-optimizer":"^2.5.14","@ampproject/toolbox-runtime-version":"^2.5.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.5.14_1595573441537_0.06422264128713095","host":"s3://npm-registry-packages"}},"2.6.0":{"name":"@ampproject/toolbox-optimizer-express","version":"2.6.0","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.6.0","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"choumx","email":"willchou@google.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"5c0b18aea11696765052aeafc46974246ccc2eeb","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.6.0.tgz","fileCount":6,"integrity":"sha512-NWeJjvRwcIpzU1Y7RteLxAy8c2iF7Sxw9Bw4OkkGycN8rM40RWIXQUBWU8lG2z9h2mLd8iXxrOp+OaKuQzYUgg==","signatures":[{"sig":"MEQCIHakroujN0OJjV+NBKHU5tLQ45f2Cdsj6FqhJmgyrgdYAiB3vO8ln8XeLkl7s4D1mqXYSk7KVDeD51B6rJfece/UJg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22898,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfMUEZCRA9TVsSAnZWagAA58sP/25BGCN7lnqzENqnWRja\n9Xmd/g/tAwa+oMXULF1EuV1uZF0Yx0tZvpgVFOYCNQQNXNQTQnqMVzUPLgww\nXV31eE5jHv9DHXCuq9k2zOsxLdDITWe+h3t04muEk+X1IIXAULXE86I6WgcO\nEkVh0foB116WPGhE/zdfiWRo7tvEV3vB+/EcbL8or0zpfPMRPF5hX5KvBoeY\nJFXHdL3HOjVxeS7cQjJt97YCy6Y2Xyh7hZ+ND758MNdAfCHP3aUn+A0eSBmt\np2/OwagGx9go7MEYMwnnBKUuq2cv18oeezO7LPFVDHzdHXPJuWc99VIx9roz\n+60jZ/Dvvi3gXdMujgMGD/QzBvJOkPkkpnTTHPCRl4RNBwG0o/Txt85nowHc\nS7tbVSkzIRj0jdr2AQRRpGqj7IE5tDN0Yl5kV5RrZPY+kixZum5bcVoYL5mi\n1Exd5oQG0j66+TZ7pKUryLylOVZDGjCnZR07n05/BCVtU/g9Wr3ymLMsNuDT\nK+/O3cDwUQ159z11tDd+oXUa+3LhZYL4zR7YbIfUbo3pdFj+VLz/C/3RSOhy\ngSZepip0+GpDsKoflUSuXfP8MN2yN5AJ82oCl4czGPX5WMZLudDCy62PX5tD\nv8DV9FbJYk0fihOlPYG2n5Hql7yw3t7bM/NuJiHQMcg0t3lScUaACMZNJn+n\nRSwi\r\n=L/Xe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"1e47f01b6630a01581b7df014b76d9ba0f68542c","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.22.1/node@v12.18.3+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.18.3","dependencies":{"mime-types":"2.1.27","whatwg-url":"8.1.0","@ampproject/toolbox-core":"^2.6.0","@ampproject/toolbox-optimizer":"^2.6.0","@ampproject/toolbox-runtime-version":"^2.6.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.6.0_1597063449402_0.6434484684915267","host":"s3://npm-registry-packages"}},"2.7.0-alpha.0":{"name":"@ampproject/toolbox-optimizer-express","version":"2.7.0-alpha.0","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.7.0-alpha.0","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"choumx","email":"willchou@google.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"583c101c936689d7e65dc23c6018d04044a367a6","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.7.0-alpha.0.tgz","fileCount":6,"integrity":"sha512-+ELhRDaZjhQZJt705M7fPvVbMhT+XdeTklvlPXpivVUZXWxDMRfnXRdKXTvKkpGQ4HI08UVokGbDRBtfX6Ichw==","signatures":[{"sig":"MEUCIQDWbT6v4iGHMtP6+jgrGyqJlfY7cbC5KOhVugqU0Br+CgIgXBfzJOBO1IkNvgQDqZgvN+n4WRtPmJA5F2XsOR6ooNI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22914,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNuOdCRA9TVsSAnZWagAAcuQP/1W6FmVYqjue0ET3RwI2\n2fSmaiBPYeIA/v09Jid6fgYunr5kgwrxW+/SbzFv+vGIS8etA7++gEIGpMLq\n0MKq+oTlAh9V3NxI4QxqsUDYM/UZUq97oThiIQKEQAX7XKtm5WQef8fnZ0g2\nHRmzvjSi+gC/xCevDL1kgc12MFnwHr+N3FnvghVOsGlU20VPKyQDnoJpshPT\nJUIP36ies4kK5wJ9jv2qfw2QfzZHutYRUvmm0wK8CakbUmoi96hfg0dzTmFe\nC9MMpkU7CBJO7GzlFEoPGd/F7aih3tJbi/+MLYJHF8VGTpYTSU0whYsJh+DY\nBWAT2g038UESoLzA9kmCwHG1td0p+aIfuQbLHx/ofNBI903z8RbP8DESrgqY\nSaxgDa3hA+qdVgwuXkwOECTUEg/4gn+EhULNCcQoMOwJpzueTLTekRAFeDTO\n1jHpbkFNLG8VHnX+ZMja9BBcBGOemqsl+9Go5/yUlAf5Ery2QhnUwatHASX8\nu96HYgSZVxKkJo1I+w9469EhiVAa7k6yffALZas3rsdPhrHfYsv7hQWjRpHE\n2xTvCOFQIVGBf6yhQY/YVeMr4UQ0UFTE6QDK0Iik+0+zNu0BSq5YXWWjM5P+\nEyGn1cIickq3czOe59mnU1fRhDYoySBESGifyeQpjTgVrY+MTdIm5L5GWOWg\n7mAP\r\n=0AWh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"## Introduction\n\n[![npm version](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express.svg)](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express)\n\namp-optimizer-express is an [express](http://expressjs.com/) middleware that optimizes page load\ntimes for websites using AMP for their canonical pages. The middleware uses the same\nserver-side-rendering optimizations as the Google AMP Cache.\n\nThe middleware uses the [amp-optimizer](/packages/optimizer) component to apply server-side-rendering on the fly.\n\n## How it works\n\namp-optimizer-express intercepts the responses and replaces their content with a version that has been\ntransformed by [amp-optimizer](/packages/optimizer).\n\nAs the server-side-rendered version of the content is not valid AMP, the component also\nprovides the original content on an alternative URL. Server-side-rendering\ntransformations are not applied to this URL, and the original valid AMP is served.\n\nAn AMPHTML link tag is added to the server-side-rendered version, linking it to the original valid\nAMP version hosted on the alternative URL.\n\nExample:\n\nA valid AMP page is served on `https://example.com/index.html`.\n\nWhen the amp-optimizer-express middleware is used, that URL will serve the server-side-rendered version\nof the content.\n\nThe original, valid AMP will then become available at `https://example.com/index.html?amp`.\n\nAn amphtml link will be added to the server-side-rendered version:\n\n```html\n<link rel=\"amphtml\" href=\"https://example.com/index.html?amp\">\n```\n\n## Usage\n\nInstall via:\n\n```\n$ npm install @ampproject/toolbox-optimizer-express\n```\n\nThe AMP Optimizer Middleware can be used like any other express middleware.\n\nIt is important that the middleware is used *before* the middleware or route that renders the page.\n\nThe example bellow will transform HTML being loaded by express-static:\n\n```javascript\nconst express = require('express');\nconst path = require('path');\nconst app = express();\nconst AmpOptimizerMiddleware = require('@ampproject/toolbox-optimizer-express');\n\n// It's important that the AmpOptimizerMiddleware is added *before* the static middleware.\n// This allows us to replace the parts needed before static handles the request.\napp.use(AmpOptimizerMiddleware.create());\n\nconst staticMiddleware = express.static(path.join(__dirname, '/public'));\napp.use(staticMiddleware);\n```\n\n## Options\n\nThe following options are supported:\n\n   * `runtimeVersion`: true if the optimizer should use versioned runtime imports (default is false).\n   * `ampOnly`: true if the optimizer should only be applied to AMP files (indicated by the lightning bolt in the header).\n\nExample:\n\n```\napp.use(AmpOptimizerMiddleware.create({\n  runtimeVersion: true\n});\n```\n\n## Best Practice: Cache server-side-rendered AMPs\n\nTo achieve best performance, those transformations shouldn't be applied for\nevery request. Instead, transformations should only be applied the *first time*\na page is requested, and the results then cached. Caching can happen on the CDN\nlevel, on the site's internal infrastructure (e.g.: Memcached), or even on the\nserver itself, if the set of pages is small enough to fit in memory.\n","gitHead":"e4141565bb5666ab03f26ae2b702f1a89715563a","_npmUser":{"name":"caroqliu","email":"carolineliu@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.22.1/node@v12.18.3+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.18.3","dependencies":{"mime-types":"2.1.27","whatwg-url":"8.1.0","@ampproject/toolbox-core":"^2.6.0","@ampproject/toolbox-optimizer":"^2.7.0-alpha.0","@ampproject/toolbox-runtime-version":"^2.6.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.7.0-alpha.0_1597432732703_0.32360110909245643","host":"s3://npm-registry-packages"}},"2.7.0-alpha.1":{"name":"@ampproject/toolbox-optimizer-express","version":"2.7.0-alpha.1","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.7.0-alpha.1","maintainers":[{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"choumx","email":"willchou@google.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"samouri","email":"jzfisgreat@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"7fe65da4a5891a48da96f4d7cbe171b3bd77f6ed","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.7.0-alpha.1.tgz","fileCount":6,"integrity":"sha512-LyhE05gJ/o2ZxA+dFQ1KU+wwN68e7A6YHds8/AEDevfLTDUqBKPOvASR1i1QIXXd1gHDHxIXdVGaZAKwoE+Rmg==","signatures":[{"sig":"MEQCIAiEWOmDHNVbrA03l7w7MabCMQvHuES+ySHnld+U5GNIAiAwfloJaqhzk3YaIj3vKVPhicPKFT8w3mjWTTeWBV37bQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22922,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPWbdCRA9TVsSAnZWagAAMC0P/165hfB2g2qmgODHF7Je\nythfrDg1uOLY8uHWQhP/oZT9XIyMqXJq4pAI2OT0L2YfQwvTjUNEUVHisEGc\neZhyEJApPZO45LgIeq9+3niy6r5OYbuJt6gCYeXJw76wYjw+ektTnit9WNNh\nZEGaDbOXVfQ7EJNWFw6pWE3KNxIRBq+8LeLL/jdkm8LkczvRdX+MLXHPTFmr\nZl8NUsVFenTSO4LmjMzpBahjXRaJ7x39J1Nbanky8gw8mFZIThxHefmQSPkW\nkn3JQxjDxsj3TkUuMXEpKLROKtsKhfTk8vs6PsVX/d1XI2LTwC9swOnfPqL/\ne6ob8JpDRAYQ7/YUVjBS8HXlwMb5KQCeNT+C6dQqt+XTJzHmVrvjznuy+gsX\n0ZWY7yIRfsRI5MffIiFsp5iXfJc5cQon/ZpYDR2u6WSPO+xlGH9N/imotC2S\nw1UNxLGGoOpFrceHj/O8OSpTNHd+/dyERIPRHo9pR7Pj5Vo+lA8CibcHJNAA\nkduomX9hW7b/OZQhRweBHaiPLcEialPAlQg7g9ny3sJ8KeZP1q/alrPl1gsC\nshk3KQhnfYLtdCA1rjf1Unw2frxqVlzm6QnebsRagHGKE/kJU2FFSWYOVTfO\nx9EFtAAgeGJxWFXA++Fj8cLqP8+IwehTJUF1x63b5d1rc2+hlIrBZDtgH129\nnd+b\r\n=dy/M\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"## Introduction\n\n[![npm version](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express.svg)](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express)\n\namp-optimizer-express is an [express](http://expressjs.com/) middleware that optimizes page load\ntimes for websites using AMP for their canonical pages. The middleware uses the same\nserver-side-rendering optimizations as the Google AMP Cache.\n\nThe middleware uses the [amp-optimizer](/packages/optimizer) component to apply server-side-rendering on the fly.\n\n## How it works\n\namp-optimizer-express intercepts the responses and replaces their content with a version that has been\ntransformed by [amp-optimizer](/packages/optimizer).\n\nAs the server-side-rendered version of the content is not valid AMP, the component also\nprovides the original content on an alternative URL. Server-side-rendering\ntransformations are not applied to this URL, and the original valid AMP is served.\n\nAn AMPHTML link tag is added to the server-side-rendered version, linking it to the original valid\nAMP version hosted on the alternative URL.\n\nExample:\n\nA valid AMP page is served on `https://example.com/index.html`.\n\nWhen the amp-optimizer-express middleware is used, that URL will serve the server-side-rendered version\nof the content.\n\nThe original, valid AMP will then become available at `https://example.com/index.html?amp`.\n\nAn amphtml link will be added to the server-side-rendered version:\n\n```html\n<link rel=\"amphtml\" href=\"https://example.com/index.html?amp\">\n```\n\n## Usage\n\nInstall via:\n\n```\n$ npm install @ampproject/toolbox-optimizer-express\n```\n\nThe AMP Optimizer Middleware can be used like any other express middleware.\n\nIt is important that the middleware is used *before* the middleware or route that renders the page.\n\nThe example bellow will transform HTML being loaded by express-static:\n\n```javascript\nconst express = require('express');\nconst path = require('path');\nconst app = express();\nconst AmpOptimizerMiddleware = require('@ampproject/toolbox-optimizer-express');\n\n// It's important that the AmpOptimizerMiddleware is added *before* the static middleware.\n// This allows us to replace the parts needed before static handles the request.\napp.use(AmpOptimizerMiddleware.create());\n\nconst staticMiddleware = express.static(path.join(__dirname, '/public'));\napp.use(staticMiddleware);\n```\n\n## Options\n\nThe following options are supported:\n\n   * `runtimeVersion`: true if the optimizer should use versioned runtime imports (default is false).\n   * `ampOnly`: true if the optimizer should only be applied to AMP files (indicated by the lightning bolt in the header).\n\nExample:\n\n```\napp.use(AmpOptimizerMiddleware.create({\n  runtimeVersion: true\n});\n```\n\n## Best Practice: Cache server-side-rendered AMPs\n\nTo achieve best performance, those transformations shouldn't be applied for\nevery request. Instead, transformations should only be applied the *first time*\na page is requested, and the results then cached. Caching can happen on the CDN\nlevel, on the site's internal infrastructure (e.g.: Memcached), or even on the\nserver itself, if the set of pages is small enough to fit in memory.\n","gitHead":"cdab35d31a9d431c66cda62174fb28aff93287eb","_npmUser":{"name":"caroqliu","email":"carolineliu@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.22.1/node@v12.18.3+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.18.3","dependencies":{"mime-types":"2.1.27","whatwg-url":"8.1.0","@ampproject/toolbox-core":"^2.6.0","@ampproject/toolbox-optimizer":"^2.7.0-alpha.1","@ampproject/toolbox-runtime-version":"^2.7.0-alpha.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.7.0-alpha.1_1597859548896_0.6693757147445172","host":"s3://npm-registry-packages"}},"2.7.1-alpha.0":{"name":"@ampproject/toolbox-optimizer-express","version":"2.7.1-alpha.0","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.7.1-alpha.0","maintainers":[{"name":"alanorozco","email":"orozcoalan@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"choumx","email":"willchou@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"8e6e5dcf31145b260be8c4ec8dd07934ea8ef0ca","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.7.1-alpha.0.tgz","fileCount":5,"integrity":"sha512-oeS/ihqxVPnkTqyBTTI/n42fXpnaqlPxFm9P0Lb635jmUIffdV0CgFegwXFYdXgm/dMHqDMFUcoVZnDlPfTlMg==","signatures":[{"sig":"MEUCIBtgq8HaRkX5tt6pbTBMIKJ/j8DG85npop3I2XseoiEiAiEA3lEEA8sI7pi3Tua0yxwBtXAaF5jiwVOzrxbfPfYvgIE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11587,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxpYaCRA9TVsSAnZWagAAWSoP/jg8med3nGmQ9GUCzYgv\nLXYX1bpyfQprY+EHig/Ko2eNeDpWQIGw6a/wQm9hnrvzFkUWlNjnj/SFwuoB\nrisLgnNmBvduWxR7x7W/5DuVCz2CZH4UsfkcBbtpk3YTeh7Y80q34VSxtaEv\nNVTA4bizWDAoYpidrgC2mKyjIjydp4Dp1Ep24Au2BGL9Q7HTkU7nzSKkc2PC\n/gvUd+iDxKiWsuAz6xDA8N/6g36i52IDxGpGZxS2j8OmPha12lcSnaA7RfoO\nyJlKXllodqrAG6W6Jtw8QV7dF3JToQayZwQoFktrd25Kk6fnaAjpkESy62lA\ndHdr5Ux+egztXcsq2MFZA80fWerFcaQXCF7MDGl+OE9B+CL0Z0cDsPoXsmBs\nVR3YV56cDr75Pr5kRbjw3OYxXS972XOXthHRc7lMP10pegmCcotcGfpgj5GH\nlyow+lAX6U6DNS5PpeDNLpi2ZWrAwUektJJf/glo02MQQPA0zdA0oEY+wixR\ns3i8HGeLKw44jxeVjC3RzfH+cfjyqP0MqJyLwg5/D7WlM0Ts8IS+UqcMCviO\nILW32YjOZ0asb+3xZKOFXRRiinIql03i4VYKP90VlZEtfRpbfy83IcGY34BK\nnzBQozu5GPND0ahIWD5SkFQnb+VLbFJpFhhgUPvbWRMkFGBUgCQNr1ImDcb+\nfC0p\r\n=7PMr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"da4cca026111b917cd3901b4666a5997ef45a606","_npmUser":{"name":"patrickkettner","email":"patrickkettner@gmail.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"6.14.8","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"14.15.1","dependencies":{"mime-types":"2.1.27","whatwg-url":"8.4.0","@ampproject/toolbox-core":"^2.7.1-alpha.0","@ampproject/toolbox-optimizer":"^2.7.1-alpha.0","@ampproject/toolbox-runtime-version":"^2.7.1-alpha.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.7.1-alpha.0_1606850074365_0.20445879320529925","host":"s3://npm-registry-packages"}},"2.7.1":{"name":"@ampproject/toolbox-optimizer-express","version":"2.7.1","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.7.1","maintainers":[{"name":"alanorozco","email":"orozcoalan@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"choumx","email":"willchou@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"cf280314843e72456a542d122ecd81ac5e2c35bc","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.7.1.tgz","fileCount":6,"integrity":"sha512-yf2wvU0oEMgFBeKz7RRhe/cJYqh7Pa+SH4EBr/OCfRFrzyy+o2902CyWG2o9hayxgDfkkQcE5Tdn0Jmhl27tnw==","signatures":[{"sig":"MEQCIDGfhKOXrU8IrdCSuzHpvcnHNtrCgYSyHm3GwfboTw/CAiAb3UdVZiAE0GEpF9DA4MRJJkDiL/MsFDBHth7WoHohfw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22898,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfx6rKCRA9TVsSAnZWagAAaUUP/2xLgzZDdNFAkPxderz4\nPuM+ZHUPnNARxgxTiz9Iee1AUzQMsMwMKa/z2krYYFYw83pvIzNTgieboMLV\nOs/hM8FqCzJTxDppujdueA3hXibc3YNdjdmcvQhQ8EvFdteAXiPZJc7xBHxH\nXB1v3JTY0vK4KMECuaGhRXpEhk1N5rgy4B/5jkNojTQvIaGOfR2vKRApM5w0\n7u3EbAJlP9BJvKrKE6K8NF24XnWkDMNFYV2IS5sFlm3UJS8B6uDrY0HKJVC+\n7zsWNM1jTvYSPXKHN+0s22ciNrqnMSZ4TO/pKaYIMBuMOHpNrDfTovFknHew\nszVrfrQz/awGZE2XlOpVbRUuk17qJt3tj5jvojm8TYHBv6GF0ja7dYFWLnxW\n18rnFhbIkdJpKWgGGdzQKMKMyOWPXFwQ6QG2u8Oh+XQc2mih1C5mlliTY/aO\nF65DD+T2zTSBWldr5dxvlVLUoOL4V5JOcQExoCqkmi95AOuh+1/9N3VmmT/h\n7lQ8Fm/gUwQ7RabkBnoGVeg44NgaMME/Jf3xnhI9cxXOst9pN01V0jlr2XyP\n41U9Q955za7ALLrMSvfhB6vl/GRpGgirEBSMYEv+t8LpwKaP1qHnW6i/NBvk\nTEC418MemMHg5G8HNXveK8Im6PM+4fkiFng3K5HRG6I7/FC5BJt95lm5FsNX\ntK3t\r\n=2vox\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"9b159391d776396512b01ec250fa76941713c763","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.22.1/node@v12.18.3+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.18.3","dependencies":{"mime-types":"2.1.27","whatwg-url":"8.4.0","@ampproject/toolbox-core":"^2.7.1","@ampproject/toolbox-optimizer":"^2.7.1","@ampproject/toolbox-runtime-version":"^2.7.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.7.1_1606920905715_0.12938182824343314","host":"s3://npm-registry-packages"}},"2.7.2":{"name":"@ampproject/toolbox-optimizer-express","version":"2.7.2","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.7.2","maintainers":[{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"1329b16c8c19927ccf9bd45ff17ca110f3f11931","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.7.2.tgz","fileCount":6,"integrity":"sha512-Wv7Y/tGBspdm5ui/QMlxwO1WyzITljxWdEflV344lcf0wd5EhW7zWZfbhOnRs3341UnPTZmQ9UZ+8PN8hAF10w==","signatures":[{"sig":"MEQCIDjTJQ+n32CeDfdEuJ+cZwAbd8a/3D3EYifzrOMM1dy/AiAvrhgokkipopMa5Nwo+g3++I6Xe6fsC1TNWWRQBQNdeg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22898,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2ROoCRA9TVsSAnZWagAARwwP/ibfBFgF6elk3F397Tbf\nG9zGXjj+4Rg6c4esc11rD5U8Q4LgtBdfVpTD7e2VkfXoMDxPpm2kpXo3ff1K\n1bWn2omQZzqNxgg+lTK4qzArW39dHSw4L8tJFMr5iSf4NFiUUuatikbJGEwm\n2/NN3DfjbATjnAQuRxBDdlCOyN4ZzHgYUDdWl2iOUitRzSZ7Hq/xL15gI8GQ\nxnw7caB1XaG2RTMt0Jpd4CoxIvX75Nk7WuvtoLmEYJNhTbpQHlrPGhWRFXCJ\nxC2J72gxpPFQGoo2NpoOIIakILeorJQUZXuwjgj25d6/V7KACiTl8zUcZj56\ncYr7PEIpzMEEUI9sZBa+fF2QUDTPE6KhK7HIKWUZLFOdnhkAnZfe+BiBQrTd\nFCIjCC9hH2DEAxlCy3rZhsC5hneBoJph3s4QUEkSnVptUeT1YoXG+55uK2sW\n5mifLyAtHTNYMjZXq5c0nJD1fD4KbbGqhUwutMv4kos0Oa4pWc8FPGB5ZZMs\nLsmukvKYtp+1wbt07agS8C9F7smS6TQWWEexhvHOqr18szvKgofYPonnN49I\nYn81oHD1yNiDrjc5cUWM9H7Jk0G1oAQKslsfPdg6NfWyT8ahWF0fSQNqDkF3\nJqXwJtK/0QMscT/suJkV2043GJa8srBrCPde1b3jJOxpEtXda3xpLrEUMQyj\n3q7G\r\n=R2PG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"83d1d4290d9da2683596506cff266c68e618fa81","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.22.1/node@v12.18.3+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.18.3","dependencies":{"mime-types":"2.1.27","whatwg-url":"8.4.0","@ampproject/toolbox-core":"^2.7.2","@ampproject/toolbox-optimizer":"^2.7.2","@ampproject/toolbox-runtime-version":"^2.7.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.7.2_1608061864133_0.362335290323452","host":"s3://npm-registry-packages"}},"2.7.3":{"name":"@ampproject/toolbox-optimizer-express","version":"2.7.3","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.7.3","maintainers":[{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"0a1ec8c17849bf7f53a33c4d77677476fe9b067a","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.7.3.tgz","fileCount":6,"integrity":"sha512-tpWVpPvmGihoeRCMAXYqXg8D4VQ9dFy/PlAXEL0iT4DDW6oQY1wgrA8IoiDWbm3O5UDN0I+7M0HRIjvjWOkiPA==","signatures":[{"sig":"MEUCIQDo+mWSG8jSqVJfwrrtZ8LiTNDtMcZ4//mRbhvV3UOTHwIgAi5Jid0CJwspYUq2jIf48SlnnR8PHwjDJFckNY96V7E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22898,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf23VcCRA9TVsSAnZWagAAU+AP/i8UZTxhVtAMkAXPnuUe\n7nidnc6wzDc+XVblXJMQVQzhngENKXc6X0h5xMdh+sGMEA4MLfR3jZO4smBR\nAxpCrwDv+AHrusKxT3/Nt5p8yKJevOo807Ijbovp80ZVrql7/jQ5r6osrnLi\nLV74fYq97cg37tJYLE3sGg8PT2OuXpDz2bkMkoiOxfM5FAarDdZJ1Fw6JAny\nfpXGjxWj4DyXrB/mAxgAvoxn/R0N/stwMHi0IkRTiMH0S6TFCilqCG6WjVhD\nGR1kF8BPX02E0y3Osz5ldpqBmy6YL8z9i3MNlIpNdygD0osKhT6MwsoKKYfR\nCe2jXOzdrY78r0V3ojoIvnhDGNT7Olaq34WSlaezk3gDViZfP+H1my95ci6c\n0K6kuJpa+TFK7RaPEapfuzb8seJ1qf0f1BqfN5dKujAmgBuZN44P2bgesNxZ\nJlE+V2pZbfZBtDV/F93a7NjtzBuZQEPD1iCbXGQ/oln84b88z/M+6uPgAL3/\nUnvim93ndRe1RwjDhG4tmztOddGuSlXFGQqk8ZCx/W26ISDmgqETiPTjn0Z+\nfCV7T1EMZ2o64gpLEKkd/LgMexJme5IZ4GES68npPkFG4G6FR4FciED7ZMjE\ncUfAnz8KDAlA7onhsKcU8Wep3HpsFOHZcCdGScOpwV1FMDqbKxzyuJ5GZTF7\n3ilj\r\n=McP5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"b0efede4ff9a6baa8173016f7c630d406e26d5e3","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.22.1/node@v12.18.3+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.18.3","dependencies":{"mime-types":"2.1.27","whatwg-url":"8.4.0","@ampproject/toolbox-core":"^2.7.2","@ampproject/toolbox-optimizer":"^2.7.3","@ampproject/toolbox-runtime-version":"^2.7.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.7.3_1608217947797_0.599808226180486","host":"s3://npm-registry-packages"}},"2.7.4":{"name":"@ampproject/toolbox-optimizer-express","version":"2.7.4","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.7.4","maintainers":[{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"d7054a2922dc62f3e115b1fc21e1e6c3efa4395d","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.7.4.tgz","fileCount":6,"integrity":"sha512-LMRBcx5x2Wg7VZOjbavHhiWpiG51QGXRmL6xYUACuY9SgMOiDIlTgEkhoDuy2hDNr69CfEvgyRUBX6U18x5QUw==","signatures":[{"sig":"MEUCIHewZ8fK6BbOTNjCRzskKDNKhcB4Wj8DGa+wyeaDC7ODAiEA/yifzpi/RvFyXHs+dcECLs5g1CqJQVdGKUNt+xBLxcU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22895,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4y8bCRA9TVsSAnZWagAApPwP/A3naM7lU4SoOe6vLOwz\nr5ROkAOCEeM2yWV1lQLocMpyZXT5gncNheE/MD4T2dIbxvKADtmGkhrJwxys\nhfIjxLYGlcP5OIF0UQrYON17MDGGKHYCSRw8rPaZOmPxkxVEp2aUnZTteHSh\nfHZNq2+gh2j0AqpubiJBCMEfgK7EyKVW0Zh31yIQjLbmnuS5BZFN7/NvRpaM\nFF2Q8WB5d7xcrpUFACFyEFnEboA6us/kjzjaE7+ewK26c5Xg5DdiLtBwFzDA\nousJElBqVyTLS6oJY3WHdWblvWNu/8oBnbwb/bXQo7mWqjHwTn4SvtcKsdj6\nKZCRuG5kriv7Pzy263rmG+BCGY3hqP6TBWc4Y2RgTgD+ovXp48WC20bAewYf\nbrqf4ZFLUtdIrACeq7mbYPmRM7z0tHLqjRmA2fxlR5P3+Vo5sHd/rm7pOGlS\nlWb1nD+T43Z4do1dgGer0vAttpNErzE+87lP9CAI9QWIA65VCRN/Iv4GviKU\nKJ8PAxJZa7OixhElpNwK16nFzztZ9QmD+WXw7RciNT2iq5C6EgY1igsqYDz2\n655bg7A9abwFpJUNb5eiaytnGJDdpqj6pQqIE5Ny6K1JYSp2uHQ1p0hHzJm9\n9vpg3c08Yzti7r7PGOhx1/srXHjsY5+ZWKmDNXI/+etDp/S41AHrnPXl8Iik\nZJt7\r\n=3kFa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"881ffbde5be5e78e039b132f0daae3a3598ae248","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.22.1/node@v12.18.3+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.18.3","dependencies":{"mime-types":"2.1.27","whatwg-url":"8.4.0","@ampproject/toolbox-core":"2.7.4","@ampproject/toolbox-optimizer":"2.7.4","@ampproject/toolbox-runtime-version":"2.7.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.7.4_1608724251560_0.3102200120667167","host":"s3://npm-registry-packages"}},"2.7.5":{"name":"@ampproject/toolbox-optimizer-express","version":"2.7.5","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.7.5","maintainers":[{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"c5354a9d0e7f1b367fa30d59aa503a7898ae15ab","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.7.5.tgz","fileCount":6,"integrity":"sha512-s2BdpW2dBUqXWS7v1p71vmy+1kvncNKOtv1R5LxNKpJNAeAZDQ9f3gLuDt6hBtIC/LYDPXdSzi9oOGFOfpWPaQ==","signatures":[{"sig":"MEQCIG1mfJclaFN+zbmSxMrf9wSYR5ERwNyVMbU5e+3PA7cgAiAA74zS6G9GRMbw91+iexCsRlkpvmHPpCK6/g2nc/L0Fw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22896,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBXrwCRA9TVsSAnZWagAAqpsP/3U/24Pi9Wbh2ouXESvc\n+KWCqlonqmJMm4NyCMxRMHCpTUsz3YyJc/t5t9NgTVYL+2833f+yk71Iu+4O\nc4UOjBnzyrKWS6QDWSVSeb9G67G1IVukkby7s2kHFykh8NEYQXztwccow5vX\ntpI3LTS9feIab/zQ60ToxfnprRnr7zwNuKLnIBzfRLopl6/dreDGMUjZ5wM5\n++cjtX7INeckgB2qDBAq2XRQ7RDomUUUvxxSgByah3FpR1YTd/XSq+f+O1+I\nZy2MENKIw14o0MC1Hp7FLzajUpZvUB043nT+d/YJNvEpbsHc5Dt5H1S3/szM\nG8NyXS9jLL2QRXJqVirjfLw6l/bT7BeDx3y3zOb9i1inUB0XpwHyRXObzBgA\nGlGyvE6hlaiYLGPvPZQ28ID/lPotns0y9clKB7rVaXPFH3KCvO48tTPpBgQp\nwmwTFMI44OVQtEVDcDM5X20ukt4R6/YAyoWrklqB9HLtInnEiWa5Bt2QbPQU\na5FxoLab13tYFxI1Ww4L8Ttr1RoaThOiG7RA2JuTHysyqmmoY23Wz+/mJte/\nw6osqMNBpT3lhoTf3wKMhDExd5FubafKOgUiURmmMXjhV8nqn7UgvvWFsSEq\nr/5Sfz/d65J7jfTZKUKrB4vNJYraGJ0vmujk2bF0Cot+IlDoTMRy8xkVGlvo\nEHcD\r\n=75IV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"b86ff10f2a20a9e5f810f31a694c7f020eb291ae","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.22.1/node@v12.18.3+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"12.18.3","dependencies":{"mime-types":"2.1.28","whatwg-url":"8.4.0","@ampproject/toolbox-core":"2.7.4","@ampproject/toolbox-optimizer":"^2.7.5","@ampproject/toolbox-runtime-version":"2.7.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.7.5_1610971887669_0.7166376162192971","host":"s3://npm-registry-packages"}},"2.7.6":{"name":"@ampproject/toolbox-optimizer-express","version":"2.7.6","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.7.6","maintainers":[{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"8aaf99d101baf276ffec3f6a4c237b717f7b6271","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.7.6.tgz","fileCount":6,"integrity":"sha512-oK58h/7EKLhpjKLpEyKhcSKhfY047f1fFvd+2kb1m2xTyxLvjRTAFr36KnXJf5KbkZeIVzxxTzLyspMlOSs1lA==","signatures":[{"sig":"MEUCICnJ8gxBXc5ndfagYJVgXc13O5IALfTa+GC6Blh7RkLIAiEAvLbsIXFbB2Z5nMu+RemIO49YPpA/5nU3ml5OXI7XnQU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22896,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgF/tTCRA9TVsSAnZWagAAyy0P/3bPbFdZnJPMTaAULs1P\nvR2kdnbKBGj0kyextUEpBp6F6TxxirQNkywE0Sot4LLLxR1am5AtZIOom8mR\njunuV8fPjThWus2LTOctT3akXCGhfk4HrXsIT3L3E1TrrrsDdSYwxbZb2UNL\nNhTL2ryXWAcaAv8Nz+GcqEMfGgjR5Fkyp6n/ccy01YrXj59BsOci5iyHSlcD\nGrPm/lF9TKOKAfSK/YwoOGKBiuNW8X1kqDmDBJmH+eKf0Js4TX7meDz6Et0H\nucqXQ8JCOsfCVY23+F64d7feY+N50D4lM9RXW7twWwVj08zmGuElTCQMzQRy\nFaXMLTIJXbUCzjiaL/YPFnOlMSVfKjBKUCXCa0G6ED/Ifx8X6bNX3zj5+VZG\nXu/htSw2jf5ob+If9RNbtya9qChBI9Ka7IHwmNtz4Jg3NvIQfgf4rIg09trH\n103gIIiwfmM2e2BiVsrFP0HUXGyi7hStpMtbUhOJBmFOmTk3ynMp3w+hgpci\noMSTuSTYRvjzd/c2uRP2DasEWxEORFZt92VfdjKoF+1aBHmW3BYCi+zVJcee\nrsve1sqrefr/PcHZQP22LIdLMJp6YfCW68kGR15zA1ApSBM+Y3YagPcR8Nut\nwo33ZGiHF5JuDrtlkG2hn/SwE5lqrvL6SunpI4Tuvch4HFWGE1noGPO+x9/D\n/XMU\r\n=W+KV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"bc8367e395b11f7b9ceb03562bd15982415a771d","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.22.1/node@v14.15.4+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"14.15.4","dependencies":{"mime-types":"2.1.28","whatwg-url":"8.4.0","@ampproject/toolbox-core":"2.7.4","@ampproject/toolbox-optimizer":"^2.7.6","@ampproject/toolbox-runtime-version":"2.7.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.7.6_1612184403051_0.5764650790169139","host":"s3://npm-registry-packages"}},"2.8.0-canary.0":{"name":"@ampproject/toolbox-optimizer-express","version":"2.8.0-canary.0","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.8.0-canary.0","maintainers":[{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"ccbc5241b085a7b888b0d7279acf5d58a13c234b","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.8.0-canary.0.tgz","fileCount":6,"integrity":"sha512-+qKqOsQGn2+u4om1PR3S+iTLGJSimW9aVAD1dhdMQswKAU+VProphqhqkgS8qGBHbm75Y16eegtdB/rTS6mLnw==","signatures":[{"sig":"MEUCIHN4KB3DmsRWqjv0OTJctXyeWnpxLatyGH+GzS//Nl44AiEAoIjXML4FkJIfz0oZ6nbSmIy2AXso5p6dGeBxrWxpzrw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22934,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJrnrCRA9TVsSAnZWagAA1R4P+QB6zEsfXj4ZKPdR71Ks\n7Inin9HUtoJY/LJ/DiYZsgdJa2z7scBesN9x3TzVJ4QTcccOLCYmfAUy7ePo\ngkSBIILXbJzLGyfUswikg2kxo1Hcksj7qdDQ4hSU68/DP6J6grORh2jV0JAK\nVwAnB+XX0uhvHMT3SNFlu+pyduAEtl0elQeXraiamM110yZX6/MiKqc1S3wR\n5E5IMa+dHIRpAp1axLm8K90CvegJFmlS5QHGXdMcgkfFko8GxbXfC5NIymFO\nF9Y1QBM2s5ilAj/GSwiey9pAeLCtK52EfTFkYA7roineHieyopuYV3R1v9/h\n0izq1yCgmMkcPDdJx3j2+XHg1vmsjtcAow+fQYbZxBVEB+XwwNa/OSeNQyey\nHJUVMjU5NA5S3E5Ltrn1riykghBdJfSSZHM3yD0X0OmUSeU0hbAShpCeiKRu\nIS9oRsl8OAKisxl6UpKVMokgJyDgnWzxFiTtpvtoTAmT4bTVx3uVPGw+pxmw\noBAQZ648FEZS80QrUq9Z6AVyD8cuDE+jT84GgFd1EFp0xUTEFgBDFM3hKLDj\nIXRmWi0qRAM7fYC8hEOg0dp42n17Ttu2rrVmpH5WxFwPtxZ9nlojQSdYKQKH\nHXec9iLKw6S8s38JByPian66Gbw/nSH4TQSeiH1suwvDeUtub7szWEY82uKS\nGbYU\r\n=15E+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"## Introduction\n\n[![npm version](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express.svg)](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express)\n\namp-optimizer-express is an [express](http://expressjs.com/) middleware that optimizes page load\ntimes for websites using AMP for their canonical pages. The middleware uses the same\nserver-side-rendering optimizations as the Google AMP Cache.\n\nThe middleware uses the [amp-optimizer](/packages/optimizer) component to apply server-side-rendering on the fly.\n\n## How it works\n\namp-optimizer-express intercepts the responses and replaces their content with a version that has been\ntransformed by [amp-optimizer](/packages/optimizer).\n\nAs the server-side-rendered version of the content is not valid AMP, the component also\nprovides the original content on an alternative URL. Server-side-rendering\ntransformations are not applied to this URL, and the original valid AMP is served.\n\nAn AMPHTML link tag is added to the server-side-rendered version, linking it to the original valid\nAMP version hosted on the alternative URL.\n\nExample:\n\nA valid AMP page is served on `https://example.com/index.html`.\n\nWhen the amp-optimizer-express middleware is used, that URL will serve the server-side-rendered version\nof the content.\n\nThe original, valid AMP will then become available at `https://example.com/index.html?amp`.\n\nAn amphtml link will be added to the server-side-rendered version:\n\n```html\n<link rel=\"amphtml\" href=\"https://example.com/index.html?amp\">\n```\n\n## Usage\n\nInstall via:\n\n```\n$ npm install @ampproject/toolbox-optimizer-express\n```\n\nThe AMP Optimizer Middleware can be used like any other express middleware.\n\nIt is important that the middleware is used *before* the middleware or route that renders the page.\n\nThe example bellow will transform HTML being loaded by express-static:\n\n```javascript\nconst express = require('express');\nconst path = require('path');\nconst app = express();\nconst AmpOptimizerMiddleware = require('@ampproject/toolbox-optimizer-express');\n\n// It's important that the AmpOptimizerMiddleware is added *before* the static middleware.\n// This allows us to replace the parts needed before static handles the request.\napp.use(AmpOptimizerMiddleware.create());\n\nconst staticMiddleware = express.static(path.join(__dirname, '/public'));\napp.use(staticMiddleware);\n```\n\n## Options\n\nThe following options are supported:\n\n   * `runtimeVersion`: true if the optimizer should use versioned runtime imports (default is false).\n   * `ampOnly`: true if the optimizer should only be applied to AMP files (indicated by the lightning bolt in the header).\n\nExample:\n\n```\napp.use(AmpOptimizerMiddleware.create({\n  runtimeVersion: true\n});\n```\n\n## Best Practice: Cache server-side-rendered AMPs\n\nTo achieve best performance, those transformations shouldn't be applied for\nevery request. Instead, transformations should only be applied the *first time*\na page is requested, and the results then cached. Caching can happen on the CDN\nlevel, on the site's internal infrastructure (e.g.: Memcached), or even on the\nserver itself, if the set of pages is small enough to fit in memory.\n","gitHead":"0ec5cb5ca31022687841bc344b29fa8e775310d8","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.22.1/node@v14.15.4+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"14.15.4","dependencies":{"mime-types":"2.1.28","whatwg-url":"8.4.0","@ampproject/toolbox-core":"^2.8.0-canary.0","@ampproject/toolbox-optimizer":"^2.8.0-canary.0","@ampproject/toolbox-runtime-version":"^2.8.0-canary.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.8.0-canary.0_1613150698669_0.7613533775961763","host":"s3://npm-registry-packages"}},"2.8.0-canary.1":{"name":"@ampproject/toolbox-optimizer-express","version":"2.8.0-canary.1","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.8.0-canary.1","maintainers":[{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"fecedd5772bd47c2b034d8788e4a08988fdbc1f8","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.8.0-canary.1.tgz","fileCount":6,"integrity":"sha512-w38+UM6kOjKhMfOZqFv2SYxLobSX7qMbqloDuVeXVV+tmEY+dT76lDnTRnPyEkZ5Z7nEnb8se1NikD0AqminWg==","signatures":[{"sig":"MEUCIDBfwZYXcWFt26FLBJP8Lu+zesTfaB0r5GjJ+lnZcOBuAiEAo8nEiaYvPDT8jiWbOwVrk9MZ1kNQTmZ0XhEwDySvGfQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22934,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJrxOCRA9TVsSAnZWagAAu8UP/i0rLRkNwqa7snMX3y4B\nSfDBTLuIA3DQXzT88n4yeRcyXjnwDfWBKhY21rj1MkAvOs5bD1kFhfw8uYET\nH83NUGPZhapcfr+VQv02A61EiDYGrdOfN8DIx894Ci8A+utP71NLnomKLLFZ\nzOZkGAQx+2jbMTtccSsFAzOnNZB0Vac6nGM1OBAh/5GsfTCgrl1qHU9uglUj\n4kJxlIZGnSjkHou/Eo4Pl2YpD/8+39cD9fVJhEcJbdmw8InfKgJ/BmPhSzUN\ntuIWaPOzFn4xlx/KCwEd71pJ6kwzH7oKISL/8JR/AZxSgnfKmCKOMNUdVoiA\nRtd6CYvI48OqOhScvBxfaJOkRGIaLUzJuFSuzPEdKLP0It7PDFTSy0SulyRd\nGA+NdXzgBSQEwrjq0IXXFaeKF/vvnZ3IP5q5S0ulTMbEJzpLWfxB8+Tome33\nWVZmexOqhFBa3/6tWpsyh4afxehZkA6alsmTS8qWOhWTMXUWbYkCEf9EljcQ\nyvMGh5u87kqBtpmbepgJqLUVGo0UyircMIXMnoS/7jqXrKJwQ8eBSzBfCNTz\nU67gZ8fL0HMn8hWKqRN691NN/PmjteW/jCm530pcPjvGN9RDLGby9t3XjV0f\nz+EnadX19G1+OUKaDyW8xyU/ulvMSqqb61lebQgTbNUnRHXGnvKNKOP8oyND\nenz0\r\n=u2OG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"## Introduction\n\n[![npm version](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express.svg)](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express)\n\namp-optimizer-express is an [express](http://expressjs.com/) middleware that optimizes page load\ntimes for websites using AMP for their canonical pages. The middleware uses the same\nserver-side-rendering optimizations as the Google AMP Cache.\n\nThe middleware uses the [amp-optimizer](/packages/optimizer) component to apply server-side-rendering on the fly.\n\n## How it works\n\namp-optimizer-express intercepts the responses and replaces their content with a version that has been\ntransformed by [amp-optimizer](/packages/optimizer).\n\nAs the server-side-rendered version of the content is not valid AMP, the component also\nprovides the original content on an alternative URL. Server-side-rendering\ntransformations are not applied to this URL, and the original valid AMP is served.\n\nAn AMPHTML link tag is added to the server-side-rendered version, linking it to the original valid\nAMP version hosted on the alternative URL.\n\nExample:\n\nA valid AMP page is served on `https://example.com/index.html`.\n\nWhen the amp-optimizer-express middleware is used, that URL will serve the server-side-rendered version\nof the content.\n\nThe original, valid AMP will then become available at `https://example.com/index.html?amp`.\n\nAn amphtml link will be added to the server-side-rendered version:\n\n```html\n<link rel=\"amphtml\" href=\"https://example.com/index.html?amp\">\n```\n\n## Usage\n\nInstall via:\n\n```\n$ npm install @ampproject/toolbox-optimizer-express\n```\n\nThe AMP Optimizer Middleware can be used like any other express middleware.\n\nIt is important that the middleware is used *before* the middleware or route that renders the page.\n\nThe example bellow will transform HTML being loaded by express-static:\n\n```javascript\nconst express = require('express');\nconst path = require('path');\nconst app = express();\nconst AmpOptimizerMiddleware = require('@ampproject/toolbox-optimizer-express');\n\n// It's important that the AmpOptimizerMiddleware is added *before* the static middleware.\n// This allows us to replace the parts needed before static handles the request.\napp.use(AmpOptimizerMiddleware.create());\n\nconst staticMiddleware = express.static(path.join(__dirname, '/public'));\napp.use(staticMiddleware);\n```\n\n## Options\n\nThe following options are supported:\n\n   * `runtimeVersion`: true if the optimizer should use versioned runtime imports (default is false).\n   * `ampOnly`: true if the optimizer should only be applied to AMP files (indicated by the lightning bolt in the header).\n\nExample:\n\n```\napp.use(AmpOptimizerMiddleware.create({\n  runtimeVersion: true\n});\n```\n\n## Best Practice: Cache server-side-rendered AMPs\n\nTo achieve best performance, those transformations shouldn't be applied for\nevery request. Instead, transformations should only be applied the *first time*\na page is requested, and the results then cached. Caching can happen on the CDN\nlevel, on the site's internal infrastructure (e.g.: Memcached), or even on the\nserver itself, if the set of pages is small enough to fit in memory.\n","gitHead":"972aa9a6264f5baf0dfb698a236e130b92480867","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.22.1/node@v14.15.4+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"14.15.4","dependencies":{"mime-types":"2.1.28","whatwg-url":"8.4.0","@ampproject/toolbox-core":"^2.8.0-canary.0","@ampproject/toolbox-optimizer":"^2.8.0-canary.1","@ampproject/toolbox-runtime-version":"^2.8.0-canary.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.8.0-canary.1_1613151310487_0.2894200515968184","host":"s3://npm-registry-packages"}},"2.8.0-canary.2":{"name":"@ampproject/toolbox-optimizer-express","version":"2.8.0-canary.2","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.8.0-canary.2","maintainers":[{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"68b921572ecb71619edb4ca4a8a21797f4a9da39","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.8.0-canary.2.tgz","fileCount":6,"integrity":"sha512-iExAQ6+qEdyeXWkYUG+ZFZ0j7zTH7HrkmFOP1yu00rHtCF/WUfW5xhJvedtTg8SsC7WaFfSWy+VAOvMolmfjWQ==","signatures":[{"sig":"MEQCIHCa1Fs/DVHk35g50wcD5K9tsgouqpLKo3GxShSakOKsAiBYLvHVou0NEWLvLN9WQ4L60zAr2m6jRs3rTiyGhx6isQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22934,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgKlsTCRA9TVsSAnZWagAAkcIP/joZcXcsixRwEEb0ZNJV\nRETOQNiK/8IqJ8m0dccYxHEzP+K1hEZ6U+pMCptWsmXJACOqsoWmtt31w+1+\nzHjrH+jbOm8YDcM+MjrvHbxeKCK9V+yUMPuc6JD6X3H701U7xLfRTsQ1UH4h\nFIEybYgTRFL8CDXHS/FdlBL6OJ0tyjzizVwfrWbb2ecS0Uy2RkeB+DZD5wxV\nzW8qbx9atTsCj76R7dqJFlSPuFDXcMYf5RB9UWUQMGoHhxOc/B8cUlRFgR5l\nq9JThPKkEBSuvKx/sdDiKllXbxZ4w/dDDBCwZVtqG6nf8MACLT3GtPU4aGLf\nvfPEUuwclkTsdKi4hLgmQYGWeBwFsYg3uRb5I4qwCMbmuR6zYXQYK/A6Qlj1\n07FulaU2GEg0EAzhVl6nMVkwQaQR0PmDejZKth78nG02fQaFto8XbtOH1clj\nuqzygwzmZr5LD7w6ly9yB0JpqBO4l2b6+1SNUim7j7l0srPTn6IFKKONvLwn\nMtTDqaAXZaREhTJErpmz9xdPPigv28290nv9+KyNGdgXvPJf2yopaqEZ4E/D\nAGpn751+6O7cRMSbrMtbhyM6FuSo3/OduQJNreQzKc8MGWMzHwVFGam52+U4\nGmLnbwfSiKiisko3rqEJy9V0+yuegmr6EUkF2N7q96e/y04uEoVlOkCT3+ZL\nATOS\r\n=jjG9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"## Introduction\n\n[![npm version](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express.svg)](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express)\n\namp-optimizer-express is an [express](http://expressjs.com/) middleware that optimizes page load\ntimes for websites using AMP for their canonical pages. The middleware uses the same\nserver-side-rendering optimizations as the Google AMP Cache.\n\nThe middleware uses the [amp-optimizer](/packages/optimizer) component to apply server-side-rendering on the fly.\n\n## How it works\n\namp-optimizer-express intercepts the responses and replaces their content with a version that has been\ntransformed by [amp-optimizer](/packages/optimizer).\n\nAs the server-side-rendered version of the content is not valid AMP, the component also\nprovides the original content on an alternative URL. Server-side-rendering\ntransformations are not applied to this URL, and the original valid AMP is served.\n\nAn AMPHTML link tag is added to the server-side-rendered version, linking it to the original valid\nAMP version hosted on the alternative URL.\n\nExample:\n\nA valid AMP page is served on `https://example.com/index.html`.\n\nWhen the amp-optimizer-express middleware is used, that URL will serve the server-side-rendered version\nof the content.\n\nThe original, valid AMP will then become available at `https://example.com/index.html?amp`.\n\nAn amphtml link will be added to the server-side-rendered version:\n\n```html\n<link rel=\"amphtml\" href=\"https://example.com/index.html?amp\">\n```\n\n## Usage\n\nInstall via:\n\n```\n$ npm install @ampproject/toolbox-optimizer-express\n```\n\nThe AMP Optimizer Middleware can be used like any other express middleware.\n\nIt is important that the middleware is used *before* the middleware or route that renders the page.\n\nThe example bellow will transform HTML being loaded by express-static:\n\n```javascript\nconst express = require('express');\nconst path = require('path');\nconst app = express();\nconst AmpOptimizerMiddleware = require('@ampproject/toolbox-optimizer-express');\n\n// It's important that the AmpOptimizerMiddleware is added *before* the static middleware.\n// This allows us to replace the parts needed before static handles the request.\napp.use(AmpOptimizerMiddleware.create());\n\nconst staticMiddleware = express.static(path.join(__dirname, '/public'));\napp.use(staticMiddleware);\n```\n\n## Options\n\nThe following options are supported:\n\n   * `runtimeVersion`: true if the optimizer should use versioned runtime imports (default is false).\n   * `ampOnly`: true if the optimizer should only be applied to AMP files (indicated by the lightning bolt in the header).\n\nExample:\n\n```\napp.use(AmpOptimizerMiddleware.create({\n  runtimeVersion: true\n});\n```\n\n## Best Practice: Cache server-side-rendered AMPs\n\nTo achieve best performance, those transformations shouldn't be applied for\nevery request. Instead, transformations should only be applied the *first time*\na page is requested, and the results then cached. Caching can happen on the CDN\nlevel, on the site's internal infrastructure (e.g.: Memcached), or even on the\nserver itself, if the set of pages is small enough to fit in memory.\n","gitHead":"fe10db3e56dda4ed952ac629319a6a4ac0e66f54","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.22.1/node@v14.15.4+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"14.15.4","dependencies":{"mime-types":"2.1.28","whatwg-url":"8.4.0","@ampproject/toolbox-core":"^2.8.0-canary.0","@ampproject/toolbox-optimizer":"^2.8.0-canary.2","@ampproject/toolbox-runtime-version":"^2.8.0-canary.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.8.0-canary.2_1613388563375_0.9713675854913737","host":"s3://npm-registry-packages"}},"2.8.0-canary.3":{"name":"@ampproject/toolbox-optimizer-express","version":"2.8.0-canary.3","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.8.0-canary.3","maintainers":[{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"1aa619c5bfb277fefe38357fa8dba60ad42e74ff","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.8.0-canary.3.tgz","fileCount":6,"integrity":"sha512-nnS4cL6yDPvRRLtKcanHmAYFQdoZnFeTE9vTW7acdRcSyUfwAUKxBCJEr4Eb6jcPLFe7sy66VodkhpniUXzQKA==","signatures":[{"sig":"MEUCIQCu7Ph/Ih1EWRCKLIUtKc3sDuARnww5/jyT6LPh4Ukd0AIgDzIfABlr7M2X0Wr1+3UcKyOPcTyMrjkk/70cy1zX81w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22934,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgKseZCRA9TVsSAnZWagAA4EIP/1N223I6LILftCn/2gYT\nk6kee6OzCJTOj2c+CyG3NN7nNyFqTDg4zVx2dfkGHPwKqTIjNVvri2XjwZpb\nyFdn009GByPbLQ7sJq5dX9BDV6f5RHior2ssbmbLZXfTkHwld/oG/EySoYAA\nMHYzRYYE04sGJmsq10kCmpE8/BvOeR5eXYACNagrcEm5PWCFmFSSsAC2sDcc\n8fWBbG/LNvtsbPXZiLokWiN8YyHawfo64IHn3lkppt7UfX0RqKDeXrZIM0L3\nGQ00nF6jHBmu+cMKYGNj8P50ulpTJPLj/nF2PLQ5X/zim6Yod97ze3LKMO1R\ncFXxx2//mv5Dy9iV6GOr9lvYVrUrDJ+Zc0094Eq1xrUpndIR8DExVQ87y0+C\nhQHwTqX1OTm7po82Ovx0IzCNXq5S36entwen+A8+x0+iSuc9B39DDa6T983U\n9iBL9rwIhVIW1MeiIlYOSGT5r2S8oUxfulTw9NnSjkJtQQtjDEJw8lvmsjre\n6X4TKk7aplZtiwhtMC8GV/H7+CatsXRGjoQjRYtv3rY/qPpTbi59KXgzSDWu\nYiRllKvGScHRHshFB5898fK2q4FkFjqORzj9PNluR+fZct4o76neiIhBopM5\nwoPiDtsijV0YdUIGIZSaiyJJtmDX88F6ZPTH7nWpFjICn3tRuonagPzydpNQ\nhEKX\r\n=f2sn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"## Introduction\n\n[![npm version](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express.svg)](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express)\n\namp-optimizer-express is an [express](http://expressjs.com/) middleware that optimizes page load\ntimes for websites using AMP for their canonical pages. The middleware uses the same\nserver-side-rendering optimizations as the Google AMP Cache.\n\nThe middleware uses the [amp-optimizer](/packages/optimizer) component to apply server-side-rendering on the fly.\n\n## How it works\n\namp-optimizer-express intercepts the responses and replaces their content with a version that has been\ntransformed by [amp-optimizer](/packages/optimizer).\n\nAs the server-side-rendered version of the content is not valid AMP, the component also\nprovides the original content on an alternative URL. Server-side-rendering\ntransformations are not applied to this URL, and the original valid AMP is served.\n\nAn AMPHTML link tag is added to the server-side-rendered version, linking it to the original valid\nAMP version hosted on the alternative URL.\n\nExample:\n\nA valid AMP page is served on `https://example.com/index.html`.\n\nWhen the amp-optimizer-express middleware is used, that URL will serve the server-side-rendered version\nof the content.\n\nThe original, valid AMP will then become available at `https://example.com/index.html?amp`.\n\nAn amphtml link will be added to the server-side-rendered version:\n\n```html\n<link rel=\"amphtml\" href=\"https://example.com/index.html?amp\">\n```\n\n## Usage\n\nInstall via:\n\n```\n$ npm install @ampproject/toolbox-optimizer-express\n```\n\nThe AMP Optimizer Middleware can be used like any other express middleware.\n\nIt is important that the middleware is used *before* the middleware or route that renders the page.\n\nThe example bellow will transform HTML being loaded by express-static:\n\n```javascript\nconst express = require('express');\nconst path = require('path');\nconst app = express();\nconst AmpOptimizerMiddleware = require('@ampproject/toolbox-optimizer-express');\n\n// It's important that the AmpOptimizerMiddleware is added *before* the static middleware.\n// This allows us to replace the parts needed before static handles the request.\napp.use(AmpOptimizerMiddleware.create());\n\nconst staticMiddleware = express.static(path.join(__dirname, '/public'));\napp.use(staticMiddleware);\n```\n\n## Options\n\nThe following options are supported:\n\n   * `runtimeVersion`: true if the optimizer should use versioned runtime imports (default is false).\n   * `ampOnly`: true if the optimizer should only be applied to AMP files (indicated by the lightning bolt in the header).\n\nExample:\n\n```\napp.use(AmpOptimizerMiddleware.create({\n  runtimeVersion: true\n});\n```\n\n## Best Practice: Cache server-side-rendered AMPs\n\nTo achieve best performance, those transformations shouldn't be applied for\nevery request. Instead, transformations should only be applied the *first time*\na page is requested, and the results then cached. Caching can happen on the CDN\nlevel, on the site's internal infrastructure (e.g.: Memcached), or even on the\nserver itself, if the set of pages is small enough to fit in memory.\n","gitHead":"fec25a83d058b3afbe2f8bd5a6c2a6ca8efd430e","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.22.1/node@v14.15.4+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"14.15.4","dependencies":{"mime-types":"2.1.28","whatwg-url":"8.4.0","@ampproject/toolbox-core":"^2.8.0-canary.0","@ampproject/toolbox-optimizer":"^2.8.0-canary.3","@ampproject/toolbox-runtime-version":"^2.8.0-canary.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.8.0-canary.3_1613416344638_0.621555399819457","host":"s3://npm-registry-packages"}},"2.8.0-canary.4":{"name":"@ampproject/toolbox-optimizer-express","version":"2.8.0-canary.4","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.8.0-canary.4","maintainers":[{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"9b4db01bc696b68c9bd98899b913976ae6c56a78","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.8.0-canary.4.tgz","fileCount":6,"integrity":"sha512-2G5fYTSDI2mRTL0AVBjwFjPp+Nk9s7g2brDLCTejaqKL9Fcghi+RF7j02Id4b2w3moMz7tOP1oFX+3JdUHlhmA==","signatures":[{"sig":"MEYCIQDDNhLMay5DvtAXUCgWKdHqxdzQu3Udvj8vMKoK8M7kNwIhANZWngMDarbeV1YxduhE2BraAQyjM1i8A8me51iPsf16","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22934,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPjWWCRA9TVsSAnZWagAA8iAQAJ/0jPgRFmrI5m8Dk7qf\niCBDJD+d+ymz9uC3BiEu0v6AARgFiRyMh/MVzvCIENtL3yoHmaC/Si9lz50e\nKjDU6/3Hm2N4OkWnVGIWhJRNfujUtIwyLGlLQfyyeprqqAMTciUFP0jscn5t\ngcCEtC+vap4qoBqoT4j3WbZZGr4WOaIt0yFpqgRuqs1zDdKDKRA67LolmhB6\nieHqSuvFCIwQxYOIrGyz/GR8azJ/7HtembhsbAfG2vPTqEyM9JO7zYdfMq6R\nwFmJAefHf97cipImvtc3qDIYHTdRalZsNlHo8IeQCbLGwd705ET3Alv0ZhQ5\nob2M4/COABtozjZdQxfpx0ZGeM4g8G531DOg9PbQjvtSEDKDoV40BrBrLsk1\nYjuo7x01R9PHwYFxT99PVkB+xrhXI7eDGOQXO+RlDqXDUPY7K44N4MlVj1Vd\nsNo01Pr5eXOkWlhwiwDdvlgiv5lXK6AJ0JFLXZgtZ7l9Df/IUcqpakzgxvJ1\nvAE/g9QsZEviJGHN41ufDlrJY82ue8g0LgHjmHFB1+6ve+Zav86Zymi+gGu6\nUHod08ufrCU/5zMhzYPNa3w9Wc223Kmtqh4hiDggnca3VxwJQ66VKMyApbEl\n6eRDnYLULLVmpuZ1mVBmbmqx6ldH1FwXzek/JziX/0QGz8fPZFsLH6ETAL5L\niFA4\r\n=NxI+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"## Introduction\n\n[![npm version](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express.svg)](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express)\n\namp-optimizer-express is an [express](http://expressjs.com/) middleware that optimizes page load\ntimes for websites using AMP for their canonical pages. The middleware uses the same\nserver-side-rendering optimizations as the Google AMP Cache.\n\nThe middleware uses the [amp-optimizer](/packages/optimizer) component to apply server-side-rendering on the fly.\n\n## How it works\n\namp-optimizer-express intercepts the responses and replaces their content with a version that has been\ntransformed by [amp-optimizer](/packages/optimizer).\n\nAs the server-side-rendered version of the content is not valid AMP, the component also\nprovides the original content on an alternative URL. Server-side-rendering\ntransformations are not applied to this URL, and the original valid AMP is served.\n\nAn AMPHTML link tag is added to the server-side-rendered version, linking it to the original valid\nAMP version hosted on the alternative URL.\n\nExample:\n\nA valid AMP page is served on `https://example.com/index.html`.\n\nWhen the amp-optimizer-express middleware is used, that URL will serve the server-side-rendered version\nof the content.\n\nThe original, valid AMP will then become available at `https://example.com/index.html?amp`.\n\nAn amphtml link will be added to the server-side-rendered version:\n\n```html\n<link rel=\"amphtml\" href=\"https://example.com/index.html?amp\">\n```\n\n## Usage\n\nInstall via:\n\n```\n$ npm install @ampproject/toolbox-optimizer-express\n```\n\nThe AMP Optimizer Middleware can be used like any other express middleware.\n\nIt is important that the middleware is used *before* the middleware or route that renders the page.\n\nThe example bellow will transform HTML being loaded by express-static:\n\n```javascript\nconst express = require('express');\nconst path = require('path');\nconst app = express();\nconst AmpOptimizerMiddleware = require('@ampproject/toolbox-optimizer-express');\n\n// It's important that the AmpOptimizerMiddleware is added *before* the static middleware.\n// This allows us to replace the parts needed before static handles the request.\napp.use(AmpOptimizerMiddleware.create());\n\nconst staticMiddleware = express.static(path.join(__dirname, '/public'));\napp.use(staticMiddleware);\n```\n\n## Options\n\nThe following options are supported:\n\n   * `runtimeVersion`: true if the optimizer should use versioned runtime imports (default is false).\n   * `ampOnly`: true if the optimizer should only be applied to AMP files (indicated by the lightning bolt in the header).\n\nExample:\n\n```\napp.use(AmpOptimizerMiddleware.create({\n  runtimeVersion: true\n});\n```\n\n## Best Practice: Cache server-side-rendered AMPs\n\nTo achieve best performance, those transformations shouldn't be applied for\nevery request. Instead, transformations should only be applied the *first time*\na page is requested, and the results then cached. Caching can happen on the CDN\nlevel, on the site's internal infrastructure (e.g.: Memcached), or even on the\nserver itself, if the set of pages is small enough to fit in memory.\n","gitHead":"0c3af53a631fffeffbe3da1f2d626172fc996f1b","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/3.22.1/node@v14.15.4+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"14.15.4","dependencies":{"mime-types":"2.1.29","whatwg-url":"8.4.0","@ampproject/toolbox-core":"^2.8.0-canary.0","@ampproject/toolbox-optimizer":"^2.8.0-canary.4","@ampproject/toolbox-runtime-version":"^2.8.0-canary.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.8.0-canary.4_1614689685961_0.8647726656264503","host":"s3://npm-registry-packages"}},"2.8.0-canary.6":{"name":"@ampproject/toolbox-optimizer-express","version":"2.8.0-canary.6","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.8.0-canary.6","maintainers":[{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"3445027dee75fa5b7adf0695ef2d71cf1c17dfe6","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.8.0-canary.6.tgz","fileCount":6,"integrity":"sha512-6a5A8ftt/ihSHWR5cvRJkaUapRHx0lMT1T9rzI9bAek4QrY4o73Bp1RQkrqtCSyX20wytv1/b868yrn+WU0r0g==","signatures":[{"sig":"MEQCIF3R45WQXepTypZpPcgaOcBqyhYvWU210J10kifMURwDAiAyYOF4ifLo9+76vZw9pSwGn/jxS+1MT1l8/zY1odGfMQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22934,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgU40MCRA9TVsSAnZWagAA9qMQAIbrkUZPRHHEiT4ARdIT\noi8E3KKcYnB8GqNP088gPolB+9fIygkFbkfnDbW22StvhxHvi/fbuQhfFhVF\njKnIEi4ghcHn3tvZ9PlQWpkkO0O7KWJiNbvbUQVLyj3RjmNjs0yp6aNhNhLA\n95CKYoZTAlHWvAVnpvR+H9JZDa9YvmwBerx1uf/eG8QQ0ZviSWOUEziERYe3\ny2f5cuONpM1X0lJv6nudu9FE9gnKcIvrvhbt69wlfBmuE3rk43dGY1l1eipV\ndD3vfZ4or948J7fvywODgCjWNZJnJvFFFriynqQ3L4pFIU9XBQa9h1YJcJtQ\nLvzTb1e0e3FPIg11gj2t1b03J5J+OQ1T1kWh6WHDQRRT1j+Nna2Upwkz3tof\ni14Oa/umW/ZmUaGI0uf7Lup5TfLnFEAMxXjb0kndeXAGQSTVGyWrpgnnnw7P\nGcKVKvLnLHmidlVgIeIwVGJsRcVvgQvhn5V7LSRR0nmO6ws1Ydxcg18sEC6F\n7zhFQ8RCPUsf23RX3oASgnK2u7gHDy6/JraFMXSM3TRsS4IGteoJ83PNLzX+\n8FHXW6/0EPRrEu96s9hvRAc4/30WKPx5aqGfDZRz47xmYI129Quy1woKTosM\nDcQxmgnDBr6q0BfMzQx8eqrPmIlnhj2HOcG7pgc8uqXX3qOpAM/g4oPw10cH\nBJ33\r\n=AZr8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"## Introduction\n\n[![npm version](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express.svg)](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express)\n\namp-optimizer-express is an [express](http://expressjs.com/) middleware that optimizes page load\ntimes for websites using AMP for their canonical pages. The middleware uses the same\nserver-side-rendering optimizations as the Google AMP Cache.\n\nThe middleware uses the [amp-optimizer](/packages/optimizer) component to apply server-side-rendering on the fly.\n\n## How it works\n\namp-optimizer-express intercepts the responses and replaces their content with a version that has been\ntransformed by [amp-optimizer](/packages/optimizer).\n\nAs the server-side-rendered version of the content is not valid AMP, the component also\nprovides the original content on an alternative URL. Server-side-rendering\ntransformations are not applied to this URL, and the original valid AMP is served.\n\nAn AMPHTML link tag is added to the server-side-rendered version, linking it to the original valid\nAMP version hosted on the alternative URL.\n\nExample:\n\nA valid AMP page is served on `https://example.com/index.html`.\n\nWhen the amp-optimizer-express middleware is used, that URL will serve the server-side-rendered version\nof the content.\n\nThe original, valid AMP will then become available at `https://example.com/index.html?amp`.\n\nAn amphtml link will be added to the server-side-rendered version:\n\n```html\n<link rel=\"amphtml\" href=\"https://example.com/index.html?amp\">\n```\n\n## Usage\n\nInstall via:\n\n```\n$ npm install @ampproject/toolbox-optimizer-express\n```\n\nThe AMP Optimizer Middleware can be used like any other express middleware.\n\nIt is important that the middleware is used *before* the middleware or route that renders the page.\n\nThe example bellow will transform HTML being loaded by express-static:\n\n```javascript\nconst express = require('express');\nconst path = require('path');\nconst app = express();\nconst AmpOptimizerMiddleware = require('@ampproject/toolbox-optimizer-express');\n\n// It's important that the AmpOptimizerMiddleware is added *before* the static middleware.\n// This allows us to replace the parts needed before static handles the request.\napp.use(AmpOptimizerMiddleware.create());\n\nconst staticMiddleware = express.static(path.join(__dirname, '/public'));\napp.use(staticMiddleware);\n```\n\n## Options\n\nThe following options are supported:\n\n   * `runtimeVersion`: true if the optimizer should use versioned runtime imports (default is false).\n   * `ampOnly`: true if the optimizer should only be applied to AMP files (indicated by the lightning bolt in the header).\n\nExample:\n\n```\napp.use(AmpOptimizerMiddleware.create({\n  runtimeVersion: true\n});\n```\n\n## Best Practice: Cache server-side-rendered AMPs\n\nTo achieve best performance, those transformations shouldn't be applied for\nevery request. Instead, transformations should only be applied the *first time*\na page is requested, and the results then cached. Caching can happen on the CDN\nlevel, on the site's internal infrastructure (e.g.: Memcached), or even on the\nserver itself, if the set of pages is small enough to fit in memory.\n","gitHead":"69468eb65804e741db4bfbd129c7c4dbfb4b7561","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/4.0.0/node@v14.15.4+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"14.15.4","dependencies":{"mime-types":"2.1.29","whatwg-url":"8.4.0","@ampproject/toolbox-core":"^2.8.0-canary.0","@ampproject/toolbox-optimizer":"^2.8.0-canary.6","@ampproject/toolbox-runtime-version":"^2.8.0-canary.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.8.0-canary.6_1616088332136_0.6057264568740799","host":"s3://npm-registry-packages"}},"2.8.0-canary.9":{"name":"@ampproject/toolbox-optimizer-express","version":"2.8.0-canary.9","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.8.0-canary.9","maintainers":[{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"d29678b9ed12769dbf3cd276050a62fa8814fecc","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.8.0-canary.9.tgz","fileCount":6,"integrity":"sha512-f01assboy13PBaZ6umma/k/oKWs2ul6ur7QvQmRglXIBa+mYZw3chX+SJMGxY8SXl82CbCXRuz4rBhGZgNeg4g==","signatures":[{"sig":"MEQCIAuRftSKPxt2n0M+LIMRM03FBxSYfMWS15gJtsZCTMW8AiB6bPYos21dvbA827prFKOksXT7G+ywquNb0QB0NjZcdQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22934,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWLFhCRA9TVsSAnZWagAAoe4P/1VY/+PELPZ1w6GrGK64\nvxQXQUtPsxSvEwd/4kSoKJSUSZiNKP22Xek7XTRFPWFIJTlFdYvw/nIDVvd5\n6VrcxlO4qsJYMtqRMsevytxaB7yxIeWsD4so6SLDwLFmRSf7BVf4/ldq21WI\ntVNDyXABQc4h3CbGTO3IYcknu5uyCm095hnBoBHUcR2XMeMO4kYRFi3DqVhR\na75axF8hK/on9ELy7Yx7xwI+iltNd+e2ukoOufbOejcmMynv0DOUT4/Yhs4d\nViDyax3S2xBRa1ioXNPJB3HKY8d6ByfMLwT/NPQrV0Y4kA/4LMazlqCEMe48\nzUxFlJuFrnvauOYAjfE6+Xr9zNQi0Xl9kAVs1Rci+NBbfUSXGC54mklJp59e\n1XkXcABgh1swpbfVhFvajGCf5AWRmgafXHgUwKTCZ0hNd3E17hgebv14nBUu\nxudv6gY9oobREc5fYgh2orjTcGtZwMiwqlV9aAnipYDevnsYv3Z4bt4Z8QPx\n75PqjS47BFMuOCHFukSMj9OditRYzRMbEvQtH1Lg0RRrGXjP+lzb9mHQ8Uc/\nh4pueQP6MmkRljSkwr34QegHKbq1m7kivccaVOxw9Qb43ISVimTOwMixlGzp\ncjZ57q2HDlCSDB0eegjxPS6srlcz3j7iVbRzD0jBg4RX6BeL2+Nrxl2GVlEr\nr3/9\r\n=S5Ik\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"## Introduction\n\n[![npm version](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express.svg)](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express)\n\namp-optimizer-express is an [express](http://expressjs.com/) middleware that optimizes page load\ntimes for websites using AMP for their canonical pages. The middleware uses the same\nserver-side-rendering optimizations as the Google AMP Cache.\n\nThe middleware uses the [amp-optimizer](/packages/optimizer) component to apply server-side-rendering on the fly.\n\n## How it works\n\namp-optimizer-express intercepts the responses and replaces their content with a version that has been\ntransformed by [amp-optimizer](/packages/optimizer).\n\nAs the server-side-rendered version of the content is not valid AMP, the component also\nprovides the original content on an alternative URL. Server-side-rendering\ntransformations are not applied to this URL, and the original valid AMP is served.\n\nAn AMPHTML link tag is added to the server-side-rendered version, linking it to the original valid\nAMP version hosted on the alternative URL.\n\nExample:\n\nA valid AMP page is served on `https://example.com/index.html`.\n\nWhen the amp-optimizer-express middleware is used, that URL will serve the server-side-rendered version\nof the content.\n\nThe original, valid AMP will then become available at `https://example.com/index.html?amp`.\n\nAn amphtml link will be added to the server-side-rendered version:\n\n```html\n<link rel=\"amphtml\" href=\"https://example.com/index.html?amp\">\n```\n\n## Usage\n\nInstall via:\n\n```\n$ npm install @ampproject/toolbox-optimizer-express\n```\n\nThe AMP Optimizer Middleware can be used like any other express middleware.\n\nIt is important that the middleware is used *before* the middleware or route that renders the page.\n\nThe example bellow will transform HTML being loaded by express-static:\n\n```javascript\nconst express = require('express');\nconst path = require('path');\nconst app = express();\nconst AmpOptimizerMiddleware = require('@ampproject/toolbox-optimizer-express');\n\n// It's important that the AmpOptimizerMiddleware is added *before* the static middleware.\n// This allows us to replace the parts needed before static handles the request.\napp.use(AmpOptimizerMiddleware.create());\n\nconst staticMiddleware = express.static(path.join(__dirname, '/public'));\napp.use(staticMiddleware);\n```\n\n## Options\n\nThe following options are supported:\n\n   * `runtimeVersion`: true if the optimizer should use versioned runtime imports (default is false).\n   * `ampOnly`: true if the optimizer should only be applied to AMP files (indicated by the lightning bolt in the header).\n\nExample:\n\n```\napp.use(AmpOptimizerMiddleware.create({\n  runtimeVersion: true\n});\n```\n\n## Best Practice: Cache server-side-rendered AMPs\n\nTo achieve best performance, those transformations shouldn't be applied for\nevery request. Instead, transformations should only be applied the *first time*\na page is requested, and the results then cached. Caching can happen on the CDN\nlevel, on the site's internal infrastructure (e.g.: Memcached), or even on the\nserver itself, if the set of pages is small enough to fit in memory.\n","gitHead":"0974deb66a4bf37062208de3f6dbeea1ba08fa36","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/4.0.0/node@v14.15.4+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"14.15.4","dependencies":{"mime-types":"2.1.29","whatwg-url":"8.4.0","@ampproject/toolbox-core":"^2.8.0-canary.9","@ampproject/toolbox-optimizer":"^2.8.0-canary.9","@ampproject/toolbox-runtime-version":"^2.8.0-canary.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.8.0-canary.9_1616425313243_0.21438988422897576","host":"s3://npm-registry-packages"}},"2.8.0-canary.15":{"name":"@ampproject/toolbox-optimizer-express","version":"2.8.0-canary.15","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.8.0-canary.15","maintainers":[{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"cc857b1f4883044d196c1c6071cce9ceeb7faec7","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.8.0-canary.15.tgz","fileCount":6,"integrity":"sha512-A8cnL+oyRQDqbEoUqWJkSt4tnMnPR+RdUR7bzfXLDlVPZI8BZvwkfRaXXI7aNXGNorNMLTMSsKZkqajvWxO4Zw==","signatures":[{"sig":"MEUCICVMzxNlvRIpSAEyTH4v4cJtaLYxTqDR/1Bd+ioTonM3AiEAgqHmmrmR++WtLITdtBnMcMk5kCSEiPfb0nTXPtVA+i0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22938,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgY4uLCRA9TVsSAnZWagAAY0EP/3Z010foejfcb+7xb9GK\nZf/xYqWKKS/KTfHhtmaQW1LkHKNuOKgn734pCOV3NfwtqlWdA/+JR2uQoS7K\n5aXZLZTqHck9Cj6DyX/NRQOSV4kXU7nanPkqyg1mH9XcuQiRHe+CfZtIbV8O\n9/HqzkZPe+dTCKMfatlQe1heUgNzWlhoa+GI00/aIm2wbc7rHXla2OtZGXRQ\nQ7/AXduUTsk+deLprCXfXXTX2XwALHNioUdeYcJjd8sY5YrNalY1X1e7Kjbw\nsl/oLZb2QkVh62wrHlGs7/tTAUiKYFCQYNzmzUXy/bSIoItFztsXiFgP3QMS\njMMWo8DjVtzyHmvS3rXdgIzQ/+qRF9bOgBSqQl0RaZDFKojB8pmv5yDkFIqU\n/43NZ6Om82gwuFJ1wAVBShLAv83TPMoTCDAKj7S1jjJuZw+hTqCCnN2SQz2f\nOlZYu8SNSITt7pIp7y6XDFgaofhDADk3C6f67RW60cedFSTrT7yausrm4jtc\nRQAeIZb4fjZFXNiVn0Cgt4ftDEdoYzVKb7EWte6VzGF8a7mP6EBWdVzxXvEg\nRqq852IVyIVi5YatDuhFmAAwOR10WGJisswcuGy8t1GRXlMensKnK3LVbFgP\n3K0Ta6XORxJXlsllrMY8W4oVOI0uHogTUBRowBOtQxjcSAlc49XZXqGn/0Kc\nMAfc\r\n=7ICg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"## Introduction\n\n[![npm version](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express.svg)](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express)\n\namp-optimizer-express is an [express](http://expressjs.com/) middleware that optimizes page load\ntimes for websites using AMP for their canonical pages. The middleware uses the same\nserver-side-rendering optimizations as the Google AMP Cache.\n\nThe middleware uses the [amp-optimizer](/packages/optimizer) component to apply server-side-rendering on the fly.\n\n## How it works\n\namp-optimizer-express intercepts the responses and replaces their content with a version that has been\ntransformed by [amp-optimizer](/packages/optimizer).\n\nAs the server-side-rendered version of the content is not valid AMP, the component also\nprovides the original content on an alternative URL. Server-side-rendering\ntransformations are not applied to this URL, and the original valid AMP is served.\n\nAn AMPHTML link tag is added to the server-side-rendered version, linking it to the original valid\nAMP version hosted on the alternative URL.\n\nExample:\n\nA valid AMP page is served on `https://example.com/index.html`.\n\nWhen the amp-optimizer-express middleware is used, that URL will serve the server-side-rendered version\nof the content.\n\nThe original, valid AMP will then become available at `https://example.com/index.html?amp`.\n\nAn amphtml link will be added to the server-side-rendered version:\n\n```html\n<link rel=\"amphtml\" href=\"https://example.com/index.html?amp\">\n```\n\n## Usage\n\nInstall via:\n\n```\n$ npm install @ampproject/toolbox-optimizer-express\n```\n\nThe AMP Optimizer Middleware can be used like any other express middleware.\n\nIt is important that the middleware is used *before* the middleware or route that renders the page.\n\nThe example bellow will transform HTML being loaded by express-static:\n\n```javascript\nconst express = require('express');\nconst path = require('path');\nconst app = express();\nconst AmpOptimizerMiddleware = require('@ampproject/toolbox-optimizer-express');\n\n// It's important that the AmpOptimizerMiddleware is added *before* the static middleware.\n// This allows us to replace the parts needed before static handles the request.\napp.use(AmpOptimizerMiddleware.create());\n\nconst staticMiddleware = express.static(path.join(__dirname, '/public'));\napp.use(staticMiddleware);\n```\n\n## Options\n\nThe following options are supported:\n\n   * `runtimeVersion`: true if the optimizer should use versioned runtime imports (default is false).\n   * `ampOnly`: true if the optimizer should only be applied to AMP files (indicated by the lightning bolt in the header).\n\nExample:\n\n```\napp.use(AmpOptimizerMiddleware.create({\n  runtimeVersion: true\n});\n```\n\n## Best Practice: Cache server-side-rendered AMPs\n\nTo achieve best performance, those transformations shouldn't be applied for\nevery request. Instead, transformations should only be applied the *first time*\na page is requested, and the results then cached. Caching can happen on the CDN\nlevel, on the site's internal infrastructure (e.g.: Memcached), or even on the\nserver itself, if the set of pages is small enough to fit in memory.\n","gitHead":"082fd3256f3664fb016b47d2d1b965d47ebb3f53","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/4.0.0/node@v14.15.4+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"14.15.4","dependencies":{"mime-types":"2.1.29","whatwg-url":"8.4.0","@ampproject/toolbox-core":"^2.8.0-canary.15","@ampproject/toolbox-optimizer":"^2.8.0-canary.15","@ampproject/toolbox-runtime-version":"^2.8.0-canary.15"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.8.0-canary.15_1617136522785_0.5158392545513715","host":"s3://npm-registry-packages"}},"2.8.0-canary.16":{"name":"@ampproject/toolbox-optimizer-express","version":"2.8.0-canary.16","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.8.0-canary.16","maintainers":[{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"abdef8065eb3d1c0142d1d4ad1baac844089dd7b","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.8.0-canary.16.tgz","fileCount":6,"integrity":"sha512-Q4LXDkAEW2ttdBOUW0MUqx/77nYrp3MYt80s/ROYgEg3p/Y9evmO4ff4O207BKZFBEvQlvLcFeCjzmoVZuNosw==","signatures":[{"sig":"MEUCIQCI50GKwxlda0sZ6f7xC3qY39utRdR3YVfkWXiVHRnlqwIgaJFzHUs5PcNE1eRkz29ENkCIIdMnmtlLPY+cqHwjbzI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22938,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgb0IsCRA9TVsSAnZWagAAbZwP/iFFsCDbOdL9GPjkqqMi\nM10x6PBiI8sEaRKV3hVGRCeFbClJKMfEuSWV6cmdRxCGBo/+wDPWdp51a3jH\nWjey7HEB5yS3BFf+YlBt7yLE9+Y4ZAbOrlbSFUqWVGNDPV0pyoIEltU3hpLV\nkErNkzWTTz39eFh6FfLhzkgalmjMA07TnNWIVxWtetI1K5ERpAWxm35VAHB7\n+oJids4F8fiu0u5uoj6PzViE3NUyw+XqZg62Lfeg7F2lpbm3WBf+OILTLaHk\n+qaFcS7eI6ON+uRm2jcZjSDk4hZ9JochQm1qRCpqo5xCkm5oaAXY/Tj2FeIl\nJs2B9B0LDElSeJAhYeq+L7qNN4cta3bnLqvAUx10dr2pjCECvanPoQXzme/0\nRxHqRfC3QR9cSmsd9OfAg0G8/Voybf3Z7fRGncTYcsshuUw3TDGCJwucuHtW\nmaulLWe+MDafGKSUcHXEesWVt6B7zFMWQBo8XGQLfUp/31sY+UU1vVd0xQhq\nkvDvnI5R+7OCHYnfDS0MUSb4BKYXBcX4breE6qD04/llgRKbSmsPQntXtcp/\nThoNROhAHaCAH/fnQaUfAFBkjxE+ilM5omPB4wvBzJpmqQsnHRe9Othxqv9c\n3v0D53/7bapJ8grwAmjt/q6E8qO4GkkTauj6J1NyTAStVFvZS8Fi42CuDS9O\nfS0F\r\n=RBI0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"## Introduction\n\n[![npm version](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express.svg)](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express)\n\namp-optimizer-express is an [express](http://expressjs.com/) middleware that optimizes page load\ntimes for websites using AMP for their canonical pages. The middleware uses the same\nserver-side-rendering optimizations as the Google AMP Cache.\n\nThe middleware uses the [amp-optimizer](/packages/optimizer) component to apply server-side-rendering on the fly.\n\n## How it works\n\namp-optimizer-express intercepts the responses and replaces their content with a version that has been\ntransformed by [amp-optimizer](/packages/optimizer).\n\nAs the server-side-rendered version of the content is not valid AMP, the component also\nprovides the original content on an alternative URL. Server-side-rendering\ntransformations are not applied to this URL, and the original valid AMP is served.\n\nAn AMPHTML link tag is added to the server-side-rendered version, linking it to the original valid\nAMP version hosted on the alternative URL.\n\nExample:\n\nA valid AMP page is served on `https://example.com/index.html`.\n\nWhen the amp-optimizer-express middleware is used, that URL will serve the server-side-rendered version\nof the content.\n\nThe original, valid AMP will then become available at `https://example.com/index.html?amp`.\n\nAn amphtml link will be added to the server-side-rendered version:\n\n```html\n<link rel=\"amphtml\" href=\"https://example.com/index.html?amp\">\n```\n\n## Usage\n\nInstall via:\n\n```\n$ npm install @ampproject/toolbox-optimizer-express\n```\n\nThe AMP Optimizer Middleware can be used like any other express middleware.\n\nIt is important that the middleware is used *before* the middleware or route that renders the page.\n\nThe example bellow will transform HTML being loaded by express-static:\n\n```javascript\nconst express = require('express');\nconst path = require('path');\nconst app = express();\nconst AmpOptimizerMiddleware = require('@ampproject/toolbox-optimizer-express');\n\n// It's important that the AmpOptimizerMiddleware is added *before* the static middleware.\n// This allows us to replace the parts needed before static handles the request.\napp.use(AmpOptimizerMiddleware.create());\n\nconst staticMiddleware = express.static(path.join(__dirname, '/public'));\napp.use(staticMiddleware);\n```\n\n## Options\n\nThe following options are supported:\n\n   * `runtimeVersion`: true if the optimizer should use versioned runtime imports (default is false).\n   * `ampOnly`: true if the optimizer should only be applied to AMP files (indicated by the lightning bolt in the header).\n\nExample:\n\n```\napp.use(AmpOptimizerMiddleware.create({\n  runtimeVersion: true\n});\n```\n\n## Best Practice: Cache server-side-rendered AMPs\n\nTo achieve best performance, those transformations shouldn't be applied for\nevery request. Instead, transformations should only be applied the *first time*\na page is requested, and the results then cached. Caching can happen on the CDN\nlevel, on the site's internal infrastructure (e.g.: Memcached), or even on the\nserver itself, if the set of pages is small enough to fit in memory.\n","gitHead":"882c791c8c27d0dfdb947a90932913bbc8f9c129","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/4.0.0/node@v14.15.4+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"14.15.4","dependencies":{"mime-types":"2.1.29","whatwg-url":"8.4.0","@ampproject/toolbox-core":"^2.8.0-canary.15","@ampproject/toolbox-optimizer":"^2.8.0-canary.16","@ampproject/toolbox-runtime-version":"^2.8.0-canary.15"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.8.0-canary.16_1617904172331_0.18283416157235877","host":"s3://npm-registry-packages"}},"2.8.0-canary.18":{"name":"@ampproject/toolbox-optimizer-express","version":"2.8.0-canary.18","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.8.0-canary.18","maintainers":[{"name":"kdwan","email":"kdwan@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"7ea84bb30903816f00e94a205e0880807992e566","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.8.0-canary.18.tgz","fileCount":6,"integrity":"sha512-47q0KIlGypdq4sOR8ktuzEd0X2wdXSgFPzcN0imI67T2g6gXUOUwr1kkHeKl6syZ0GUbw1b4N00rIxbeWlR6IA==","signatures":[{"sig":"MEYCIQCk86y/ACzjmcCtTeLgTHXIN1JFXvBlnwBhJ5S/MynWWAIhALI2J/7X53TrpzE6RUOojzVuTuryrL6id446Lqqi5+pV","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22938,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJglaKWCRA9TVsSAnZWagAAA/oP/2Ax59sLn16H85AsCFwz\nmUeoAV4GVo6Qlzgj0s7HntWV8AYujLEGJAn7Z6X1tW/k/UyIHAyFz4yCSnOJ\nzlc+OzSGf571oInyDZysurdFuWVAsv4yf7QnvyHi1P/0Cxu8tzdbgFN1rSwT\n9u8IMbxP0K7fWmUi/NB6sqwXw3nvUSXRkyn4qcDsiDYBaQGdEn56b1Ks+VpI\nHUU+NcCAzLb2oj4ZAgPnhhagiat/HPKd8dko9bodl9VIafCuwWGNxREcNHlY\n5RW4IrCSDp38YHyKseJWKRmCWxgSa3pJIfctbeYqKDO3RQqY2DKE+JORcwow\ntdkiYZwkkOZqjPkpsvj7j48LlI/ykS9qb6E+j5i70y7UARhGo3yy/LzoOyFj\n3rRPwaoYePobjMylRepmJ+T49NaJq8VmxsNFc25SxArHDfCQOEIceaOFQHU6\nbYdj4TNNcMRPEOSC4dKVC44AhQc9GTwe7VTI7MCY9jreOF0ezIO5BRcHmzl9\na8n8FOYzy1NcSYhOOSxL6BBf5tB/5yMVT/iM6AcYUqFhmX/ERum0ECD1IYvu\n31TLaMzozg0YiYhMrHmCIkEVqC5qWf39y/uQgQ7ProsgGfG3gk3qRsE8FfTi\nFB5j7oSYggVKHamDewhQwhCOCHvHG0DuLRht92qvMmdh0ZRA7TEwj0ID9AGf\nHDms\r\n=Su4h\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"## Introduction\n\n[![npm version](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express.svg)](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express)\n\namp-optimizer-express is an [express](http://expressjs.com/) middleware that optimizes page load\ntimes for websites using AMP for their canonical pages. The middleware uses the same\nserver-side-rendering optimizations as the Google AMP Cache.\n\nThe middleware uses the [amp-optimizer](/packages/optimizer) component to apply server-side-rendering on the fly.\n\n## How it works\n\namp-optimizer-express intercepts the responses and replaces their content with a version that has been\ntransformed by [amp-optimizer](/packages/optimizer).\n\nAs the server-side-rendered version of the content is not valid AMP, the component also\nprovides the original content on an alternative URL. Server-side-rendering\ntransformations are not applied to this URL, and the original valid AMP is served.\n\nAn AMPHTML link tag is added to the server-side-rendered version, linking it to the original valid\nAMP version hosted on the alternative URL.\n\nExample:\n\nA valid AMP page is served on `https://example.com/index.html`.\n\nWhen the amp-optimizer-express middleware is used, that URL will serve the server-side-rendered version\nof the content.\n\nThe original, valid AMP will then become available at `https://example.com/index.html?amp`.\n\nAn amphtml link will be added to the server-side-rendered version:\n\n```html\n<link rel=\"amphtml\" href=\"https://example.com/index.html?amp\">\n```\n\n## Usage\n\nInstall via:\n\n```\n$ npm install @ampproject/toolbox-optimizer-express\n```\n\nThe AMP Optimizer Middleware can be used like any other express middleware.\n\nIt is important that the middleware is used *before* the middleware or route that renders the page.\n\nThe example bellow will transform HTML being loaded by express-static:\n\n```javascript\nconst express = require('express');\nconst path = require('path');\nconst app = express();\nconst AmpOptimizerMiddleware = require('@ampproject/toolbox-optimizer-express');\n\n// It's important that the AmpOptimizerMiddleware is added *before* the static middleware.\n// This allows us to replace the parts needed before static handles the request.\napp.use(AmpOptimizerMiddleware.create());\n\nconst staticMiddleware = express.static(path.join(__dirname, '/public'));\napp.use(staticMiddleware);\n```\n\n## Options\n\nThe following options are supported:\n\n   * `runtimeVersion`: true if the optimizer should use versioned runtime imports (default is false).\n   * `ampOnly`: true if the optimizer should only be applied to AMP files (indicated by the lightning bolt in the header).\n\nExample:\n\n```\napp.use(AmpOptimizerMiddleware.create({\n  runtimeVersion: true\n});\n```\n\n## Best Practice: Cache server-side-rendered AMPs\n\nTo achieve best performance, those transformations shouldn't be applied for\nevery request. Instead, transformations should only be applied the *first time*\na page is requested, and the results then cached. Caching can happen on the CDN\nlevel, on the site's internal infrastructure (e.g.: Memcached), or even on the\nserver itself, if the set of pages is small enough to fit in memory.\n","gitHead":"5b7f8de1e96cc2eba0c9fd1073d4ce1fe3ab5243","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/4.0.0/node@v14.15.4+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"14.15.4","dependencies":{"mime-types":"2.1.29","whatwg-url":"8.4.0","@ampproject/toolbox-core":"^2.8.0-canary.15","@ampproject/toolbox-optimizer":"^2.8.0-canary.18","@ampproject/toolbox-runtime-version":"^2.8.0-canary.15"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.8.0-canary.18_1620419222362_0.4508158273852787","host":"s3://npm-registry-packages"}},"2.8.0-canary.19":{"name":"@ampproject/toolbox-optimizer-express","version":"2.8.0-canary.19","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.8.0-canary.19","maintainers":[{"name":"esth","email":"esther@amp.dev"},{"name":"ampprojectbot","email":"bot@amp.dev"},{"name":"kdwan","email":"kdwan@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"71ec49dbdf717154543fee12d020b3fbc856e962","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.8.0-canary.19.tgz","fileCount":6,"integrity":"sha512-O86gEnUQEoxocyymPDGQeHHEu15kWktb1PfNqYA8Wkn/nSHK3wkEQKhtf9y1RcF0tX5P/lm7zIqdSK0YDjtQFQ==","signatures":[{"sig":"MEUCIQCJ2zUmmDKs6EYCuWCRMLkL5+mhtx6foEQSYcO1FYk7/QIgMEBgyNpGcOudMA86BDVURY8fB7dxUXMYzw1qwmuLlbg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22938,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgpW8TCRA9TVsSAnZWagAArJAP/it0JCQFu9SsUmUlMf8m\neOeaCRQnPaytHpal2XAbu5Glre/Pq7N388f45Z+ynjrimORFsn9eULB7lkcq\nF5IZbrUdzEBrJ8WhO1CGhROPljpD4XqA6KyXKE2VpsfECcnOtbiWVYt8CCYr\nt5gJGFHm9RSvEfhVYo0pV/G8XHsvXmqpKzrUOsuhFP6WINTKCPZvL0fQA2S/\nLkQey7oBypM+GN/VxtkuEVgMeA0EjdnUXaY4QTlZS7RkLXTUsgQm19g6qlfV\nhzkHPrylTtCUYX62v7R8fgLneP7PgBFngNYtz1HRFSiIVe8UgqgYoMto50Ax\nMr1U6zQvr0ZTW57fLlD0qMnflfezgjhRbJSLWUv9e3YC3TJbEdCr5+8ytdnY\nE/zozeE5/sn47Dbmw5x8z8mnj0aJfP5ScKCl1BnD1QZD4GABDNo84MXGhzPR\nIDqOkx/Ajq7uIRtpA7fKBOvN/GH3xfHH58prZ+L66VHaCLu/3b3TDMnKwtcA\nDyn8PlNBlY61suTOm/A3gJnAKsWOm4GVxubWHsOYognlmG+twHMvsS39740w\nRvzO+c9oRT87j3k9VoezUSgPjAkdtzJwy/TZK1dBsLnuV18WlSUdQJjVnj1T\nDP0FTJCj0ueuE5/GNO7f8/kSDNPwVyMNcSxNguinU93+M2qdz/QnbXiaxd9q\njllm\r\n=KCAn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"## Introduction\n\n[![npm version](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express.svg)](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express)\n\namp-optimizer-express is an [express](http://expressjs.com/) middleware that optimizes page load\ntimes for websites using AMP for their canonical pages. The middleware uses the same\nserver-side-rendering optimizations as the Google AMP Cache.\n\nThe middleware uses the [amp-optimizer](/packages/optimizer) component to apply server-side-rendering on the fly.\n\n## How it works\n\namp-optimizer-express intercepts the responses and replaces their content with a version that has been\ntransformed by [amp-optimizer](/packages/optimizer).\n\nAs the server-side-rendered version of the content is not valid AMP, the component also\nprovides the original content on an alternative URL. Server-side-rendering\ntransformations are not applied to this URL, and the original valid AMP is served.\n\nAn AMPHTML link tag is added to the server-side-rendered version, linking it to the original valid\nAMP version hosted on the alternative URL.\n\nExample:\n\nA valid AMP page is served on `https://example.com/index.html`.\n\nWhen the amp-optimizer-express middleware is used, that URL will serve the server-side-rendered version\nof the content.\n\nThe original, valid AMP will then become available at `https://example.com/index.html?amp`.\n\nAn amphtml link will be added to the server-side-rendered version:\n\n```html\n<link rel=\"amphtml\" href=\"https://example.com/index.html?amp\">\n```\n\n## Usage\n\nInstall via:\n\n```\n$ npm install @ampproject/toolbox-optimizer-express\n```\n\nThe AMP Optimizer Middleware can be used like any other express middleware.\n\nIt is important that the middleware is used *before* the middleware or route that renders the page.\n\nThe example bellow will transform HTML being loaded by express-static:\n\n```javascript\nconst express = require('express');\nconst path = require('path');\nconst app = express();\nconst AmpOptimizerMiddleware = require('@ampproject/toolbox-optimizer-express');\n\n// It's important that the AmpOptimizerMiddleware is added *before* the static middleware.\n// This allows us to replace the parts needed before static handles the request.\napp.use(AmpOptimizerMiddleware.create());\n\nconst staticMiddleware = express.static(path.join(__dirname, '/public'));\napp.use(staticMiddleware);\n```\n\n## Options\n\nThe following options are supported:\n\n   * `runtimeVersion`: true if the optimizer should use versioned runtime imports (default is false).\n   * `ampOnly`: true if the optimizer should only be applied to AMP files (indicated by the lightning bolt in the header).\n\nExample:\n\n```\napp.use(AmpOptimizerMiddleware.create({\n  runtimeVersion: true\n});\n```\n\n## Best Practice: Cache server-side-rendered AMPs\n\nTo achieve best performance, those transformations shouldn't be applied for\nevery request. Instead, transformations should only be applied the *first time*\na page is requested, and the results then cached. Caching can happen on the CDN\nlevel, on the site's internal infrastructure (e.g.: Memcached), or even on the\nserver itself, if the set of pages is small enough to fit in memory.\n","gitHead":"2c0197ab2ec605ec5046dbfe6f9840d41e38a604","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/4.0.0/node@v14.15.4+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"14.15.4","dependencies":{"mime-types":"2.1.29","whatwg-url":"8.4.0","@ampproject/toolbox-core":"^2.8.0-canary.15","@ampproject/toolbox-optimizer":"^2.8.0-canary.19","@ampproject/toolbox-runtime-version":"^2.8.0-canary.15"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.8.0-canary.19_1621454611167_0.5955097503119982","host":"s3://npm-registry-packages"}},"2.8.0-canary.20":{"name":"@ampproject/toolbox-optimizer-express","version":"2.8.0-canary.20","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.8.0-canary.20","maintainers":[{"name":"esth","email":"esther@amp.dev"},{"name":"ampprojectbot","email":"bot@amp.dev"},{"name":"kdwan","email":"kdwan@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"807fe0b43059c17af939c18e35451eae216ecc5e","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.8.0-canary.20.tgz","fileCount":6,"integrity":"sha512-lIsWi/ITXRGwExl4V4NewLGQ0Axxq2dySWj8D/C7PMhH7wGvkFzS6w8OVR/zmWRfCqF3npUdomEm8rQnfoldvQ==","signatures":[{"sig":"MEQCIFOnyydLiaimBtOM9q1/5b9ya/CEvFAoRP/IPm7LHycLAiBl5CQUOnD8p5xWv9sKrb1bFA6R+dYP2qZ8IF0hsn0bNg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22938,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgpmgtCRA9TVsSAnZWagAAAq0P/1tcn74a6iKSfpX07P8b\nzs0PtiXD4UIifVAdxE7X1hx8TBHiQzh4PrLZmfgjhT+xVrqVUZ6UEk5AGW8V\nkaovAmVpevvHbtuqWswfY39cu97xsm0s6BX0RWGreS0/1jlAN/NnCLEz456q\nQZc1m3VYUVyRPsmZZBkzyZg3HgqciHgePXQ+RWMDXpXtn4N9ggcrq/94JtaU\nSKDqlbRnNxIRCkuI4ecdpaJ9TyTX9hm6S7eNGs7o9a8Hqc2im7SrbqCSuyD7\nRj4fas9y7UXKUjUOyY8kyNONANGNVzlAqy+RpXIiZ2j/vJ8w5cPrBQl1wu7k\nkGhs/SHirMByzV25wwY6aFWtrG4PxA7zTbygGo5V3PAxk/yaI4iVHWnoc/nk\nTbq3p196NJl01rmzI/sPVpmUKEbRE94e5SxRQbMD/Wu2E2BEToPkMPVr0TQP\ntjyHfWHxv15kvfi5PVHlcG6w/M7S08BraTqtV0/NucCtecU6bX2nnwBJh/XM\nQelo1cIrSNlxrRvQtdOBKJb0VEiY3tQEt8LgTVO5ROCfj4z9RuLj1ZmwS7oh\nHm1HcerBRh8wunQO3lCHxuDsZopEVdIn7KsFM3vCUKbYkXMY/rN8SrQaIANk\nVsnHIuiqfD9utIZhRYwsnb26a7ApBaZ18+Ce0LAc6mLju4pqgFr/65Fd1tvr\n874F\r\n=9BQJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"## Introduction\n\n[![npm version](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express.svg)](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express)\n\namp-optimizer-express is an [express](http://expressjs.com/) middleware that optimizes page load\ntimes for websites using AMP for their canonical pages. The middleware uses the same\nserver-side-rendering optimizations as the Google AMP Cache.\n\nThe middleware uses the [amp-optimizer](/packages/optimizer) component to apply server-side-rendering on the fly.\n\n## How it works\n\namp-optimizer-express intercepts the responses and replaces their content with a version that has been\ntransformed by [amp-optimizer](/packages/optimizer).\n\nAs the server-side-rendered version of the content is not valid AMP, the component also\nprovides the original content on an alternative URL. Server-side-rendering\ntransformations are not applied to this URL, and the original valid AMP is served.\n\nAn AMPHTML link tag is added to the server-side-rendered version, linking it to the original valid\nAMP version hosted on the alternative URL.\n\nExample:\n\nA valid AMP page is served on `https://example.com/index.html`.\n\nWhen the amp-optimizer-express middleware is used, that URL will serve the server-side-rendered version\nof the content.\n\nThe original, valid AMP will then become available at `https://example.com/index.html?amp`.\n\nAn amphtml link will be added to the server-side-rendered version:\n\n```html\n<link rel=\"amphtml\" href=\"https://example.com/index.html?amp\">\n```\n\n## Usage\n\nInstall via:\n\n```\n$ npm install @ampproject/toolbox-optimizer-express\n```\n\nThe AMP Optimizer Middleware can be used like any other express middleware.\n\nIt is important that the middleware is used *before* the middleware or route that renders the page.\n\nThe example bellow will transform HTML being loaded by express-static:\n\n```javascript\nconst express = require('express');\nconst path = require('path');\nconst app = express();\nconst AmpOptimizerMiddleware = require('@ampproject/toolbox-optimizer-express');\n\n// It's important that the AmpOptimizerMiddleware is added *before* the static middleware.\n// This allows us to replace the parts needed before static handles the request.\napp.use(AmpOptimizerMiddleware.create());\n\nconst staticMiddleware = express.static(path.join(__dirname, '/public'));\napp.use(staticMiddleware);\n```\n\n## Options\n\nThe following options are supported:\n\n   * `runtimeVersion`: true if the optimizer should use versioned runtime imports (default is false).\n   * `ampOnly`: true if the optimizer should only be applied to AMP files (indicated by the lightning bolt in the header).\n\nExample:\n\n```\napp.use(AmpOptimizerMiddleware.create({\n  runtimeVersion: true\n});\n```\n\n## Best Practice: Cache server-side-rendered AMPs\n\nTo achieve best performance, those transformations shouldn't be applied for\nevery request. Instead, transformations should only be applied the *first time*\na page is requested, and the results then cached. Caching can happen on the CDN\nlevel, on the site's internal infrastructure (e.g.: Memcached), or even on the\nserver itself, if the set of pages is small enough to fit in memory.\n","gitHead":"d83473087587b0ea71588bf89ab767b45ad09d09","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/4.0.0/node@v14.15.4+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"14.15.4","dependencies":{"mime-types":"2.1.29","whatwg-url":"8.4.0","@ampproject/toolbox-core":"^2.8.0-canary.15","@ampproject/toolbox-optimizer":"^2.8.0-canary.20","@ampproject/toolbox-runtime-version":"^2.8.0-canary.15"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.8.0-canary.20_1621518380891_0.9900550175715752","host":"s3://npm-registry-packages"}},"2.8.0-canary.21":{"name":"@ampproject/toolbox-optimizer-express","version":"2.8.0-canary.21","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.8.0-canary.21","maintainers":[{"name":"esth","email":"esther@amp.dev"},{"name":"ampprojectbot","email":"bot@amp.dev"},{"name":"kdwan","email":"kdwan@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"d572e9d3ddf0a07b5d176c912a2d19b6a450a352","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.8.0-canary.21.tgz","fileCount":6,"integrity":"sha512-QcBUEb75FzEd9ceJKLAMg2NIU1X8qkNKuDVSu0R9Z2H9nICF2ZCrHnkigg3AAbta3EzYOJA2J+EfhJZ5kbPGgg==","signatures":[{"sig":"MEUCIG05oJg3n1amg1AEbMwMgZJgGPN5BWmSxM0PygXFPhUpAiEAzG2nn50/CRjstLDjbYNIxeJMyUHP8/epSl+FDOzWFB0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22938,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgtM6yCRA9TVsSAnZWagAAw7UQAKHGGzvLrUFAu9EVjZWV\nmF1XE3OaIczLnC65ae64pdYsT+facGpSQHA6eRUhhtHAqSfcfmeAbQ2bMhAM\ndPXDb3IADb8860ExZBoz7oYpgdaLdXyxcQVn0weBgz0DWg+bcEFZuXOZD1l5\nhhdVvEiIPVLfifHGxRXvY0yXWPVelsD9tcDBfJuTgiU4hLxNL7deQNb5on+Q\n6JblMYYv3pnw+BbacQjxClThX3NgHhpCxW9VvfWHkCsVWfH/HumG0j6H030Z\n9w1TNONG/hpPTKjpIRY+518kvnG1U2oAVvFlWNj/460o+Yz3xzugwai+sanV\nIc3N49zWpazGLyBm5zKCzZS0rr470HT4aiOfdxlL9wrHKydYVGVl/7hzsDH8\nqvIIWX6mAPrZ0pHlz+v9RMrmYqe9HeE400E2GjyhtTuz2y7uGVgGM7GWY6Tr\nrdmRooSKv3H5sy7NXvackl3gfmi1D3OTz23OJWL7iPtz7hmOoB+qpYEtbM0r\nw+BbtUCpyI6kDkMcxRYGpIMmWpmIwgQxbfX1IqpCVPYtrj9dKWJ5BSqaT3u9\n+BQsSIci7uw8fkXnUou06SJX6l+wmOPCHCPK9brdRNx6jp+Qv4MtSk9IIeOz\njXuWy1JzkShd+KCUtKkspRNyIPglYlFNH1KJDaPBhsI81jNYugrvRmuljWyL\nWxL6\r\n=DJEC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"## Introduction\n\n[![npm version](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express.svg)](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express)\n\namp-optimizer-express is an [express](http://expressjs.com/) middleware that optimizes page load\ntimes for websites using AMP for their canonical pages. The middleware uses the same\nserver-side-rendering optimizations as the Google AMP Cache.\n\nThe middleware uses the [amp-optimizer](/packages/optimizer) component to apply server-side-rendering on the fly.\n\n## How it works\n\namp-optimizer-express intercepts the responses and replaces their content with a version that has been\ntransformed by [amp-optimizer](/packages/optimizer).\n\nAs the server-side-rendered version of the content is not valid AMP, the component also\nprovides the original content on an alternative URL. Server-side-rendering\ntransformations are not applied to this URL, and the original valid AMP is served.\n\nAn AMPHTML link tag is added to the server-side-rendered version, linking it to the original valid\nAMP version hosted on the alternative URL.\n\nExample:\n\nA valid AMP page is served on `https://example.com/index.html`.\n\nWhen the amp-optimizer-express middleware is used, that URL will serve the server-side-rendered version\nof the content.\n\nThe original, valid AMP will then become available at `https://example.com/index.html?amp`.\n\nAn amphtml link will be added to the server-side-rendered version:\n\n```html\n<link rel=\"amphtml\" href=\"https://example.com/index.html?amp\">\n```\n\n## Usage\n\nInstall via:\n\n```\n$ npm install @ampproject/toolbox-optimizer-express\n```\n\nThe AMP Optimizer Middleware can be used like any other express middleware.\n\nIt is important that the middleware is used *before* the middleware or route that renders the page.\n\nThe example bellow will transform HTML being loaded by express-static:\n\n```javascript\nconst express = require('express');\nconst path = require('path');\nconst app = express();\nconst AmpOptimizerMiddleware = require('@ampproject/toolbox-optimizer-express');\n\n// It's important that the AmpOptimizerMiddleware is added *before* the static middleware.\n// This allows us to replace the parts needed before static handles the request.\napp.use(AmpOptimizerMiddleware.create());\n\nconst staticMiddleware = express.static(path.join(__dirname, '/public'));\napp.use(staticMiddleware);\n```\n\n## Options\n\nThe following options are supported:\n\n   * `runtimeVersion`: true if the optimizer should use versioned runtime imports (default is false).\n   * `ampOnly`: true if the optimizer should only be applied to AMP files (indicated by the lightning bolt in the header).\n\nExample:\n\n```\napp.use(AmpOptimizerMiddleware.create({\n  runtimeVersion: true\n});\n```\n\n## Best Practice: Cache server-side-rendered AMPs\n\nTo achieve best performance, those transformations shouldn't be applied for\nevery request. Instead, transformations should only be applied the *first time*\na page is requested, and the results then cached. Caching can happen on the CDN\nlevel, on the site's internal infrastructure (e.g.: Memcached), or even on the\nserver itself, if the set of pages is small enough to fit in memory.\n","gitHead":"c85dd8829798b64e39aea67c98bbc8470dacb18f","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/4.0.0/node@v14.15.4+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"14.15.4","dependencies":{"mime-types":"2.1.29","whatwg-url":"8.4.0","@ampproject/toolbox-core":"^2.8.0-canary.15","@ampproject/toolbox-optimizer":"^2.8.0-canary.21","@ampproject/toolbox-runtime-version":"^2.8.0-canary.15"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.8.0-canary.21_1622462130466_0.757720894796571","host":"s3://npm-registry-packages"}},"2.8.0":{"name":"@ampproject/toolbox-optimizer-express","version":"2.8.0","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.8.0","maintainers":[{"name":"esth","email":"esther@amp.dev"},{"name":"ampprojectbot","email":"bot@amp.dev"},{"name":"kdwan","email":"kdwan@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"be6bb6c7193e439eb46546c0b73a8b7f8afaa096","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.8.0.tgz","fileCount":6,"integrity":"sha512-tyy3hkAFaiP7ICPT1gjhsEBj0aoi5XAm07DGIFPPNs/mSUYcd3GpMsPbtpUIpQZGNg6PwHhCtH7uHYKhTrpxqw==","signatures":[{"sig":"MEUCIQDXJvpgUwODX//42aiDPo3O1MizOftKa9TqCYDyxFNDAwIgTC7fGXdkVuOYYVEu/Si+4KjSUFO/18UlnobSwAHdTYc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22898,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgtPRMCRA9TVsSAnZWagAAstcQAI8KU43vpZQRHN7MsCrk\n+U6C42WnXqotxzUMu4a3+Tysv2x8X0hfVXMt0aemfWp5/KeBk6GhrdjDIeOT\n8x8suH/AALLjvUQYjMIcVSz9jxasT29tYwrKzpjyBhr1Rr5op4h7UX3fVdtB\nQFxfCfIur44MwiayvSHGTdTEVttkogpfoEGIha6zXJr7mqnZpMEnKKqOOIFs\nkE14z557NR7t5ubUaALKPq1BArRdna1Cm9P1Mus9fbAdP9HlG8/xsSziyCkk\ntQoCzBY01Su0ldGf4bir4L8/VEfF92fj0hSh1LwUxYJJZXc0zrCRzwgEhinC\nQ9PsH7JkknVlm/4IzW6kjRwKJYXgkzcLj0/5ZpwEnRlykITE1JjO2PXYVVVS\nbtjeC4KoqT6maD7/H6EYJYbe7VGXdkPMvCqpNzGww2aWArMZ4Oionvl7kFgx\naTDx2qwagrfH0Dt5z+sMFO9lmBT9CobIcj+febYtWXfBjiXbUDKv7dRjEAC0\nhe6iVrYJn5NPud5zo6xwtnvmtBFk4XKlwsin3F5XtOc9V9aiByYfwhbGLOVX\nJD5J2Kw+1QLaaZvj6hZW9kpDXjaADgQkbnRPgE3QFmCFaTL+sNxO3+LSQM1F\n1Rru5B1lqGALQpFJV3fU4uLBQO7GIIvH1p8lRclCUhw2tCrVQS4zfBI/1dkE\nwYJa\r\n=ZEzW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"6103eb57765445355421826791361ac9ed9cf4d8","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/4.0.0/node@v14.15.4+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"14.15.4","dependencies":{"mime-types":"2.1.29","whatwg-url":"8.4.0","@ampproject/toolbox-core":"^2.8.0","@ampproject/toolbox-optimizer":"^2.8.0","@ampproject/toolbox-runtime-version":"^2.8.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.8.0_1622471756369_0.9995261465462122","host":"s3://npm-registry-packages"}},"2.8.1-canary.0":{"name":"@ampproject/toolbox-optimizer-express","version":"2.8.1-canary.0","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.8.1-canary.0","maintainers":[{"name":"esth","email":"esther@amp.dev"},{"name":"ampprojectbot","email":"bot@amp.dev"},{"name":"kdwan","email":"kdwan@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"f4d03bc0bc9d89c48df3e34bf840cd34c3dd6247","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.8.1-canary.0.tgz","fileCount":6,"integrity":"sha512-lva8kEMusOkL7ERD4614tfQGO/PBPK21CKGjBpfdE6hS0z3uhH4OuansLZebF8XRRKJ3nP6G/Y4egsfg+Upe4Q==","signatures":[{"sig":"MEUCIQC//iWYCRkMbahMX8dG89yu2hQQhNSPOkpgc3naTqFeMwIgNYglaqvRuYanZP6feV6mk3bzkOL+7PuhBwLNGhDkdJo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22915,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgte2QCRA9TVsSAnZWagAAmq0QAJ8WHYWGWXlUa8chAPrg\na+/zEHRIdB6aCx2LSqG9cR+sS3yDVMcaxmnGCKW/BL+MfVF23ZbRtMAlh5XO\n+FpI7cxVpuI3sZuyD6VC7Cz49bAOZ989hyNjOTvvtgGQ2L6nIiLylGrJmugR\n4GZ00Z5UMyQSZLuPQb/F9nwr+It8qs5q7+W2ekSW6nxk+VFkF/ftX/QoHNTi\nQVrZdEp4YZH3tu85eUr+SVNhOzc+/Ag3/nYGjFGDnwwBb5mVgEcJt38IZjPq\nykgvAKVYLR+9li6PnbVlUVI+vrJKTf+2d7xy0BrK+Lt9tHX27sshaz1vPjTJ\n9vHSBsVJwLOFCQPEI3n/IW3DyXBzTS+SMuwqV/kbhKyDHhW8joLNryDR0Z5i\n5fWsulat1L3oKAia5Ng5sI2zpChzprxMNz4qvKZ+M53dRvxplaLhv+Uorb5d\neuRgOd2EJOr31Lrf0/XGM26KjVilXPBaX7ecMM8O19PgVZTXf9ioX0AP5rQ+\nSv+AyOMJW/EN/PuRwO2TWspZUjqfUw5fU85Y5i5DjmGSBYTCUWY7AW38ULlH\nwKlKF4rzaybiEEn1sgxF+c026fqMd0KNHPrhEo7/xsMjXbgt02UFDtgrmUnC\n/9vuQ3TkXP9anTV2bcL+BtjK3zFvN8jERFWZtR3TG4KIJ+3BR1yOnKfBxvpF\nDDio\r\n=Ki8v\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"## Introduction\n\n[![npm version](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express.svg)](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express)\n\namp-optimizer-express is an [express](http://expressjs.com/) middleware that optimizes page load\ntimes for websites using AMP for their canonical pages. The middleware uses the same\nserver-side-rendering optimizations as the Google AMP Cache.\n\nThe middleware uses the [amp-optimizer](/packages/optimizer) component to apply server-side-rendering on the fly.\n\n## How it works\n\namp-optimizer-express intercepts the responses and replaces their content with a version that has been\ntransformed by [amp-optimizer](/packages/optimizer).\n\nAs the server-side-rendered version of the content is not valid AMP, the component also\nprovides the original content on an alternative URL. Server-side-rendering\ntransformations are not applied to this URL, and the original valid AMP is served.\n\nAn AMPHTML link tag is added to the server-side-rendered version, linking it to the original valid\nAMP version hosted on the alternative URL.\n\nExample:\n\nA valid AMP page is served on `https://example.com/index.html`.\n\nWhen the amp-optimizer-express middleware is used, that URL will serve the server-side-rendered version\nof the content.\n\nThe original, valid AMP will then become available at `https://example.com/index.html?amp`.\n\nAn amphtml link will be added to the server-side-rendered version:\n\n```html\n<link rel=\"amphtml\" href=\"https://example.com/index.html?amp\">\n```\n\n## Usage\n\nInstall via:\n\n```\n$ npm install @ampproject/toolbox-optimizer-express\n```\n\nThe AMP Optimizer Middleware can be used like any other express middleware.\n\nIt is important that the middleware is used *before* the middleware or route that renders the page.\n\nThe example bellow will transform HTML being loaded by express-static:\n\n```javascript\nconst express = require('express');\nconst path = require('path');\nconst app = express();\nconst AmpOptimizerMiddleware = require('@ampproject/toolbox-optimizer-express');\n\n// It's important that the AmpOptimizerMiddleware is added *before* the static middleware.\n// This allows us to replace the parts needed before static handles the request.\napp.use(AmpOptimizerMiddleware.create());\n\nconst staticMiddleware = express.static(path.join(__dirname, '/public'));\napp.use(staticMiddleware);\n```\n\n## Options\n\nThe following options are supported:\n\n   * `runtimeVersion`: true if the optimizer should use versioned runtime imports (default is false).\n   * `ampOnly`: true if the optimizer should only be applied to AMP files (indicated by the lightning bolt in the header).\n\nExample:\n\n```\napp.use(AmpOptimizerMiddleware.create({\n  runtimeVersion: true\n});\n```\n\n## Best Practice: Cache server-side-rendered AMPs\n\nTo achieve best performance, those transformations shouldn't be applied for\nevery request. Instead, transformations should only be applied the *first time*\na page is requested, and the results then cached. Caching can happen on the CDN\nlevel, on the site's internal infrastructure (e.g.: Memcached), or even on the\nserver itself, if the set of pages is small enough to fit in memory.\n","gitHead":"5d38b310f5c3c467220b03e3217ee8dc6f5e37d9","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/4.0.0/node@v14.15.4+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"14.15.4","dependencies":{"mime-types":"2.1.29","whatwg-url":"8.4.0","@ampproject/toolbox-core":"^2.8.0","@ampproject/toolbox-optimizer":"2.8.1-canary.0","@ampproject/toolbox-runtime-version":"^2.8.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.8.1-canary.0_1622535568446_0.21015256824992945","host":"s3://npm-registry-packages"}},"2.8.1-canary.1":{"name":"@ampproject/toolbox-optimizer-express","version":"2.8.1-canary.1","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.8.1-canary.1","maintainers":[{"name":"esth","email":"esther@amp.dev"},{"name":"ampprojectbot","email":"bot@amp.dev"},{"name":"kdwan","email":"kdwan@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"9cc427aa5166435a16ed94397c2f29a0968eb964","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.8.1-canary.1.tgz","fileCount":6,"integrity":"sha512-vxbt7azzCIOQ6AyRAQq5Y8Bz1HxZ7FGY7CYrMr6Y4KxO8HXGxvwh2vno692BWYIZfVdYTdGB+ZfW+XjGw+SCjg==","signatures":[{"sig":"MEYCIQC7Bq6I/apVbNwx3LYRJbe4BD6lnpwmxYETT8ereDsrMQIhAPbcOHppC4TueZujLm1DGZ+aTcAEr0h7cJsQqsEbWvEy","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22915,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgv2byCRA9TVsSAnZWagAAd6wP/0WJ8jMbupCz+8rrigxp\nl3G8L3LJ6/s08RoDQhhYSqJk9VSErA1MmreGow0XrE5IFuUqjGit06cXcuc8\n+bdSDWZ87NZYraN2U8YI215OQHYsJ5BMoSHN4e16HvY/JwgyYFd9FwSm9cSu\nLmKWfLAZ6GXfnLmNnCPVakdunxYua3qJ2fbdWAn2QBt53Fs/5xRX7Tv5LMkM\nGe/nehwSUUCo95uw1wGcSItaJi/xB0uC/DoPUPvGBXaCaLooryDrQbWu+oZv\n26XwMHDbJMvz4m9INXV1zQsY+YVMTNgDAmGGSNHKOA8+I6XPbR7mDVf9LDfK\n3o2A2+8uFfuLLLZWTkwVqZtj/gPB1vflAozEHorVLM8F9roZ0ShY1U1ehl/O\n1BvQj0lSRf6cbgWsvqXO7BNhWW85UQCI2l3u6Hf7LZczl8akBjDIfEziLkWD\n7oK8W5+nSAs0HGu0ELnvVJCaNGCt8swMf+q/EOYqci4QE+4D2e24gdON+ZPN\n3CqkvV1Hfe6yckP8NDsRaF1aLOEgUnhw1gYoZUqtVadkoJKsD0iamIv8/f34\nHI3+j/DBu5HAuQIs0nTwz5jNplfQm8MuBySzyWMw+p7p+iLa6BC2DBJvNANK\nRMaPwhc0bN+jrYSzNAkRQ3q4JOMXP3hcv3toF0IL9SDEMulOB31Vy41jbWC8\nyBh9\r\n=1n9p\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"## Introduction\n\n[![npm version](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express.svg)](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express)\n\namp-optimizer-express is an [express](http://expressjs.com/) middleware that optimizes page load\ntimes for websites using AMP for their canonical pages. The middleware uses the same\nserver-side-rendering optimizations as the Google AMP Cache.\n\nThe middleware uses the [amp-optimizer](/packages/optimizer) component to apply server-side-rendering on the fly.\n\n## How it works\n\namp-optimizer-express intercepts the responses and replaces their content with a version that has been\ntransformed by [amp-optimizer](/packages/optimizer).\n\nAs the server-side-rendered version of the content is not valid AMP, the component also\nprovides the original content on an alternative URL. Server-side-rendering\ntransformations are not applied to this URL, and the original valid AMP is served.\n\nAn AMPHTML link tag is added to the server-side-rendered version, linking it to the original valid\nAMP version hosted on the alternative URL.\n\nExample:\n\nA valid AMP page is served on `https://example.com/index.html`.\n\nWhen the amp-optimizer-express middleware is used, that URL will serve the server-side-rendered version\nof the content.\n\nThe original, valid AMP will then become available at `https://example.com/index.html?amp`.\n\nAn amphtml link will be added to the server-side-rendered version:\n\n```html\n<link rel=\"amphtml\" href=\"https://example.com/index.html?amp\">\n```\n\n## Usage\n\nInstall via:\n\n```\n$ npm install @ampproject/toolbox-optimizer-express\n```\n\nThe AMP Optimizer Middleware can be used like any other express middleware.\n\nIt is important that the middleware is used *before* the middleware or route that renders the page.\n\nThe example bellow will transform HTML being loaded by express-static:\n\n```javascript\nconst express = require('express');\nconst path = require('path');\nconst app = express();\nconst AmpOptimizerMiddleware = require('@ampproject/toolbox-optimizer-express');\n\n// It's important that the AmpOptimizerMiddleware is added *before* the static middleware.\n// This allows us to replace the parts needed before static handles the request.\napp.use(AmpOptimizerMiddleware.create());\n\nconst staticMiddleware = express.static(path.join(__dirname, '/public'));\napp.use(staticMiddleware);\n```\n\n## Options\n\nThe following options are supported:\n\n   * `runtimeVersion`: true if the optimizer should use versioned runtime imports (default is false).\n   * `ampOnly`: true if the optimizer should only be applied to AMP files (indicated by the lightning bolt in the header).\n\nExample:\n\n```\napp.use(AmpOptimizerMiddleware.create({\n  runtimeVersion: true\n});\n```\n\n## Best Practice: Cache server-side-rendered AMPs\n\nTo achieve best performance, those transformations shouldn't be applied for\nevery request. Instead, transformations should only be applied the *first time*\na page is requested, and the results then cached. Caching can happen on the CDN\nlevel, on the site's internal infrastructure (e.g.: Memcached), or even on the\nserver itself, if the set of pages is small enough to fit in memory.\n","gitHead":"6031314b0367d685f9b8c0769937bfb9b978b12c","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/4.0.0/node@v14.15.4+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"14.15.4","dependencies":{"mime-types":"2.1.29","whatwg-url":"8.4.0","@ampproject/toolbox-core":"^2.8.0","@ampproject/toolbox-optimizer":"2.8.1-canary.1","@ampproject/toolbox-runtime-version":"^2.8.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.8.1-canary.1_1623156466227_0.9380629123689586","host":"s3://npm-registry-packages"}},"2.8.1":{"name":"@ampproject/toolbox-optimizer-express","version":"2.8.1","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.8.1","maintainers":[{"name":"esth","email":"esther@amp.dev"},{"name":"ampprojectbot","email":"bot@amp.dev"},{"name":"kdwan","email":"kdwan@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"70ed5fe405d60a68176bf52ff22e14fe49fc8ba3","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.8.1.tgz","fileCount":6,"integrity":"sha512-it42z/it38nsnIrTRT0aKLQ+0P2R2FxRc86prcp9op3xA5SG8EYpcBlAMOoLV+F8POyCH6T0MXdEe5IfGBf4oQ==","signatures":[{"sig":"MEUCIQCAOLP/aHOLDkY04PFzYXX2R2vVRBMUo5+VvOU0JrTJSgIgNESum20mBlQw4fXoyklLl72BL7tiYu4rq4ayrxH7kh0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22897,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgwhFeCRA9TVsSAnZWagAAuPUP/3IHGXSKFVbuLzEygkbL\nBm7QnpIFScV382H+LscQa1azZHfjroFB4QdM9B2Pq8I1RqcBKpzPDa0ZdwJz\nQL1u6Kn8MfJLA0Hm96X8qIYTP1Yw+Bq5eIFFwnxquqGDnlZPE02ndepYfWOu\n9iJ1mn/GrCTgdgHyim2jTZYCozAqw42Cz7E7bXZOwlYXUG6hG5riUxfFVlUe\nZdhYWjLUX6ASc9qIFrITTQk+MlV43mJBcDoboNuRRdwRZpXwVmCfL9BwdmTM\nGYzFtPaNlCyq5/Z8VnreVRbDrFiBJCwiaTPrRRmGA6F/tcIgkasc8qj4RRQw\nLTSI7tcAWn7b8iwWa/9SIwdHmkhpZNTOVdnk179dxPxDsWYiQbcGPfXMqJZK\nCu8zIQUU7CbDAQNr616diWf+qKhFI8DqtcEQ2qHqL8iKQ5xyv5NOPV3pen7G\ny6LRMLti8eHgTxdiVG7cFFVHcs5rqgVqzBLjqV3gnD5iJr7rpsxIV95E4rwo\n2JbXX2aLRHrU4ZW647R9XHlrdcvtJ3XiDZpHkJ7OFVW0Wp6iMk8pzBbDkAMT\nqBEPtUZfM2KKxCA/2RBzNIfgvtMheyIqcOqeA8ffTl0mvkJatdaFWM1F/+gM\nYILPSOWOzcJqwtjYKGQROaxfOo47AryKlAXDnra1LI5jRZ6vHAS9HAuQzlK1\nXTN/\r\n=AgXm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"f2c2de8e3699ef107aed1d7a5320ee340495d66e","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/4.0.0/node@v14.15.4+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"14.15.4","dependencies":{"mime-types":"2.1.29","whatwg-url":"8.4.0","@ampproject/toolbox-core":"^2.8.0","@ampproject/toolbox-optimizer":"2.8.1","@ampproject/toolbox-runtime-version":"^2.8.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.8.1_1623331166094_0.38953816016797527","host":"s3://npm-registry-packages"}},"2.8.2":{"name":"@ampproject/toolbox-optimizer-express","version":"2.8.2","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.8.2","maintainers":[{"name":"esth","email":"esther@amp.dev"},{"name":"ampprojectbot","email":"bot@amp.dev"},{"name":"kdwan","email":"kdwan@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"a3c360fa83720befe8e12b6a8ff8197c87c0e2f9","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.8.2.tgz","fileCount":6,"integrity":"sha512-lx3ZIfMDDwIt+T6d+cHTCszbcFG5/Qwrc8Ih6+tL8jPSzNYhInxm/btnRl9rPGcpX1KqzJMAk5BuOpqENewPhg==","signatures":[{"sig":"MEYCIQDwYQluiRCx881O3UQ1ZOaY6o4qPDkbmeqfOf4in6mUFQIhAJLohPJ8uEt+SLgUIL30e/KLLEk9ZmHqakZCe0KXHshd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22897,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3zL2CRA9TVsSAnZWagAANRgQAIWeyPXQbZDvF/U1sVIT\nlX2nwxw8iE+VzwMWRfliy2zgs+fQF0LIMzwvHJmIv7qC8cc87/YMpocfADuE\n8Y5MxPB/4BZ2dzzr5naqnqESv6aVU+LqTLMBqXWzR1tT8Gd5qFN7U94liT+8\nNFgPq4nWtnIbVAPCUB/pb7P1qXrR5esVayE4TNHMLkyeMGOYJ85O//VB65tl\nQGwiEbLaAp9qsEmcry5/yjoM1phz5NFnEW545GRWNKGITIwlaWIMjd2xZLD9\nz8IimRLtqj3SP3fqF+xvoV6ssJgb5djtezJvzGORiXH0o3XGsd2R/bAauOKs\nLU6u1Pi639ygCwN3sCOwna9uPW2LnFHEZO/RTGUChFxOz5v33Ij847fUZmrH\nXC4AT9ZY0iPpRxXH5aB7YZ6A77LRTFhdZz7c7/nVLWStVFUnaMErg2Yzn5Mh\nGzOL6le+ua1NLBYNHNU39AXRUksKQzeqs/GAud2Vu6kbFJ5+OcJFEGZ/K03B\nnN3K4YWhLHNF2l/zO/Cgu2Vm40HEuon0+BWPNITFPIll1ycIcxCsdi9+7rP8\nHNj0T25QYZSLKZS+i8UIW+SW9tM897TzRO8KS7ruKbuRaETWvZqqbaHeaCie\nb4Y1xH7yIL9GAGG6IMPlQJFfWvrbuK3V3EXRP378nh+FRp9ezjzc7K9XvVFi\nNjrO\r\n=Nlgt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"c71c9ad1180b982c1eb00c759b689a58ae5e7bc6","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/4.0.0/node@v14.15.4+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"14.15.4","dependencies":{"mime-types":"2.1.29","whatwg-url":"8.4.0","@ampproject/toolbox-core":"^2.8.0","@ampproject/toolbox-optimizer":"2.8.2","@ampproject/toolbox-runtime-version":"^2.8.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.8.2_1625240310241_0.8733065558489992","host":"s3://npm-registry-packages"}},"2.8.3":{"name":"@ampproject/toolbox-optimizer-express","version":"2.8.3","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.8.3","maintainers":[{"name":"esth","email":"esther@amp.dev"},{"name":"ampprojectbot","email":"bot@amp.dev"},{"name":"kdwan","email":"kdwan@google.com"},{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"37b547bc5b3797e26fed9ce6da73f23c255c2095","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.8.3.tgz","fileCount":6,"integrity":"sha512-1G7sf+4FnwSH/wXiV8EYZ+n6GcD+Hs1RNAXSo9E4a//t4wD5mQADF0Nd9iWM/NtqIcGp45D0z7zrMLrMGK0/4A==","signatures":[{"sig":"MEUCIQDoIm8jtLG0YtQitcuIn2zQWDzqhJvEAGq73u/WB2Hi7wIgEdwVo+DqGM3+J6WitIsl0FRVbO9YOQLXwkBiHCg/94c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22897,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg7Ah7CRA9TVsSAnZWagAAhekP/iVVQhV+m42JQioZ7eKQ\nu/yAA8dGAZ5SQ/wers4iJJ3BI/aVFCON4eqb3GIraBjKmCGGEi+5NnGfQwwD\nWe11zNcWF8y+qO1XzxuPbDcGvzuzon33LP+w+xk9uz7FVksuuSrMr9yuCsIi\nJlYUIdwaU4ZVLMCSIzCvQEgaALHGoMyJIx8KImCkGMZnFR+5B10YvdjyE0pw\nl4KsU+STYFOnAcpI8tIADZxFRhAgSEBLRFUD6XcrtjTBKbFL4/ETJJ9UfWHq\nXAuyjJ5bwOkNcjfqEOZwxIgZbRMmaG42g7sggKoFAyZtE5usSil7ACGx6Fx9\noq+5J1GPmUUQoL872rzDJkHlhCCObS8Ejs7KTRxLF8n2zS9BManp/BsDXnGx\nBcGyX1Repvmkn0vlA8gqeqJdX6KUgfpRVKC7T5qB6H0HI3mWym2SE2OURMmJ\nMxkagstBQz8q+OuyIAPWKDA1HjUmOZ9yE4EX4NltMqVTOiwB+lVHMBAqs76b\nzD+LkEuy60NK/9bpYONgEtCHFxNqB+Z+fG/naOga8IYkDX3BWm0E9AlZfzDu\n9gbma1opITLZIG6HNmJaUV7Zz/hxAOLJCG5l2MOiyUQJOQL4+0n1iOsmD2Qj\nJlh7a+nPkaXH3g8aKBUjdgsEqtcmq7bCNVENXfaUdJcVyvmGCpXy6FdbvbLS\nWWke\r\n=VzeA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"bad2f34fdab3e00d3310f2a86fd5a1ca86caf465","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/4.0.0/node@v14.17.3+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"14.17.3","dependencies":{"mime-types":"2.1.29","whatwg-url":"8.4.0","@ampproject/toolbox-core":"^2.8.0","@ampproject/toolbox-optimizer":"2.8.3","@ampproject/toolbox-runtime-version":"^2.8.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.8.3_1626081402638_0.791000059739384","host":"s3://npm-registry-packages"}},"2.8.4":{"name":"@ampproject/toolbox-optimizer-express","version":"2.8.4","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.8.4","maintainers":[{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"},{"name":"kdwan","email":"kdwan@google.com"},{"name":"ampprojectbot","email":"bot@amp.dev"},{"name":"esth","email":"esther@amp.dev"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"24edf2987975bb41c073aac91135e34ca1637e95","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.8.4.tgz","fileCount":6,"integrity":"sha512-qMMHVH/WlKbnFCPrWf5gPGQQoTXBDACbXnJ+5yjiywFx+s6QZyXqWeL6Mcg4Bw+iDhYz18WcECBNnNP9rZ6law==","signatures":[{"sig":"MEUCIHvxMOzDaTdcPWMbNk974IV57Mka3YyQ8TB8o7y3Lbo1AiEA/X7bF2w3Xq24ERx4ITBTM3AZ4Gxu3LuwjGQJ/SgWFQI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22897,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlR9ACRA9TVsSAnZWagAAikMP+wYgbxYhipsVNFCxUuTy\nV5f9LGB6BUof9ET1MTXNs20BvY0dRPK39673dTVqFS69JBx5wVwO7xLiIm+s\nfXlkaS7+MOqqXkqhD+CVIJK1CxVTwg4nf/1NarhXJGiCA7UAk2F8Z8nZhq3d\nqUiiBnQ3cTSE/XpX9ZtFozYEWU6A/+lJkvWUbN5dPTPU8H1Pu1YxbDSnK5DY\nmC0ZNs789quhW4ZVwaXkzOlAvdSyI6L8w2FamtsvpKcIWjVJuIj9ar6SXUuT\nDZpTTJreTRecfLTMBKqE8PrTZnFFPclep+IrVUYXLISW+4j/MvwuD+mReJRp\n62BgN5hWLmzkE/SghzZInK0+bD1GuxvUIn3DqJ3/YclOBwLUNMmpjLG0DHy6\nn58fJ3/Jhqhqaz47HaSIVIm6D/iuOa7dWbl9jbOABdD5VDUArYP7BUcgXDy1\nExKEBorsiQIg8lb83UZIzafSgNKd400rEqL/l1ng7QoS7c214/KEJYm3frn7\nX4V7P8h4mcAblk9lMFBPaODc30GEyjKYWdUtfWjYvtbxAdRjMmEYgrNWb7x8\nGBvryhkeICbO5+2/urY6mqrkXbQy/iy/XqMO0Ab6dIKWoiaZZ+K61X8AQtvC\nIS40pzrLHNLG+h/lSAxucigafR27g36TgcJoe4F7A1pITA9g2Ai89O3g2t9D\neLaE\r\n=4i2M\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"5dfab2df0c550698f03d7f45634cf4079f02c66e","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/4.0.0/node@v14.17.3+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"14.17.3","dependencies":{"mime-types":"2.1.29","whatwg-url":"8.4.0","@ampproject/toolbox-core":"^2.8.0","@ampproject/toolbox-optimizer":"2.8.4","@ampproject/toolbox-runtime-version":"^2.8.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.8.4_1637162816667_0.6846263654057172","host":"s3://npm-registry-packages"}},"3.0.0-canary.2":{"name":"@ampproject/toolbox-optimizer-express","version":"3.0.0-canary.2","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@3.0.0-canary.2","maintainers":[{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"},{"name":"kdwan","email":"kdwan@google.com"},{"name":"ampprojectbot","email":"bot@amp.dev"},{"name":"esth","email":"esther@amp.dev"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"5b7cbf6390802c94aa2ac0842b7185d402fee82a","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-3.0.0-canary.2.tgz","fileCount":6,"integrity":"sha512-dstRxGFV+7ypdgm8vjZ3ypPtIwDKXqnJJkPLJoQM5OwsP+mwnh6s5vmxuLzwY1X7qiTtWFcn+/FCU6uYFyyU+A==","signatures":[{"sig":"MEUCIQDJp7cpyVRkiEu5Jum9heBPe417pTIikGRhKXbLTGJkOQIgWZbFDr1bogcjvevBrvbNmIwM8bkw928Bbj2YxcTPFCw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22931,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh3eqgCRA9TVsSAnZWagAA8FYQAI6XsgxqB2k2pTK1g7n4\nhArOf25gFLutv53wXogqZPht4LTmXwOtOnxLffDJWlXDhIMlY1PyZ6iBaWTo\nB2SmkU6ZJzL7N9kDJEABGhKa8lk8gBs1OXyAx3lBAPAk1WWKFtscL8VLvaPb\naVDjp1JBuQxEFPpJ2T7D4CrIh9qQ9rVvjsa65CF30lOdVlzsU/nqZJTUwRJs\n+BFFsA9asZBPR5i90Ezf8LP8SxrWOZO7c/VzjZwhPI4tC0wqDw4IwElpOIDQ\nKN3YwEVEvjHjGcb+2Lt+RCCy4cnk4TAWOiK6r0oJ4/faroHic5q3F8O9uQS8\nkwQDQAPSs1tiAxxCVpLoYbiPqgMKieEQhykSR8hDzymb16beu/Ibc0Q+DPSB\nJ19hk8M+ErnFEh8jzEdOC1Zm9iV4d2wPNN4UDYHxhxt/RaN4FnU8uuIhbjPa\nsYJRDAyalvykgvGBUFkZVqWDwuSfyTSzV03R4CH5Dng65UMuknZzwJU946x6\n6NW5JlzOMGmNuZzWZOIKpGVnc+PhCUoKwfl/OL/0D+eWdECcmgISQ1t+lE8g\n/gfjUX1fL7vdyFiXGCwHeP3NbVIVu3qozG64BnN8Kq1oDkaWbdUi/6Dat6rH\nzkpyQckoCE+WkIwcoq/rf2MxMkmKcsNgeUoSlzNxa5B/AKx2iAnXSASBX6R1\nkUWR\r\n=91P9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","readme":"## Introduction\n\n[![npm version](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express.svg)](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express)\n\namp-optimizer-express is an [express](http://expressjs.com/) middleware that optimizes page load\ntimes for websites using AMP for their canonical pages. The middleware uses the same\nserver-side-rendering optimizations as the Google AMP Cache.\n\nThe middleware uses the [amp-optimizer](/packages/optimizer) component to apply server-side-rendering on the fly.\n\n## How it works\n\namp-optimizer-express intercepts the responses and replaces their content with a version that has been\ntransformed by [amp-optimizer](/packages/optimizer).\n\nAs the server-side-rendered version of the content is not valid AMP, the component also\nprovides the original content on an alternative URL. Server-side-rendering\ntransformations are not applied to this URL, and the original valid AMP is served.\n\nAn AMPHTML link tag is added to the server-side-rendered version, linking it to the original valid\nAMP version hosted on the alternative URL.\n\nExample:\n\nA valid AMP page is served on `https://example.com/index.html`.\n\nWhen the amp-optimizer-express middleware is used, that URL will serve the server-side-rendered version\nof the content.\n\nThe original, valid AMP will then become available at `https://example.com/index.html?amp`.\n\nAn amphtml link will be added to the server-side-rendered version:\n\n```html\n<link rel=\"amphtml\" href=\"https://example.com/index.html?amp\">\n```\n\n## Usage\n\nInstall via:\n\n```\n$ npm install @ampproject/toolbox-optimizer-express\n```\n\nThe AMP Optimizer Middleware can be used like any other express middleware.\n\nIt is important that the middleware is used *before* the middleware or route that renders the page.\n\nThe example bellow will transform HTML being loaded by express-static:\n\n```javascript\nconst express = require('express');\nconst path = require('path');\nconst app = express();\nconst AmpOptimizerMiddleware = require('@ampproject/toolbox-optimizer-express');\n\n// It's important that the AmpOptimizerMiddleware is added *before* the static middleware.\n// This allows us to replace the parts needed before static handles the request.\napp.use(AmpOptimizerMiddleware.create());\n\nconst staticMiddleware = express.static(path.join(__dirname, '/public'));\napp.use(staticMiddleware);\n```\n\n## Options\n\nThe following options are supported:\n\n   * `runtimeVersion`: true if the optimizer should use versioned runtime imports (default is false).\n   * `ampOnly`: true if the optimizer should only be applied to AMP files (indicated by the lightning bolt in the header).\n\nExample:\n\n```\napp.use(AmpOptimizerMiddleware.create({\n  runtimeVersion: true\n});\n```\n\n## Best Practice: Cache server-side-rendered AMPs\n\nTo achieve best performance, those transformations shouldn't be applied for\nevery request. Instead, transformations should only be applied the *first time*\na page is requested, and the results then cached. Caching can happen on the CDN\nlevel, on the site's internal infrastructure (e.g.: Memcached), or even on the\nserver itself, if the set of pages is small enough to fit in memory.\n","gitHead":"0f63a77e8081f0fb7d6b63280e2fd8701836c4f9","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/4.0.0/node@v16.13.1+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"16.13.1","dependencies":{"mime-types":"2.1.31","whatwg-url":"9.0.0","@ampproject/toolbox-core":"3.0.0-canary.2","@ampproject/toolbox-optimizer":"3.0.0-canary.2","@ampproject/toolbox-runtime-version":"3.0.0-canary.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_3.0.0-canary.2_1641933472660_0.0048419455046642135","host":"s3://npm-registry-packages"}},"2.8.5":{"name":"@ampproject/toolbox-optimizer-express","version":"2.8.5","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.8.5","maintainers":[{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"},{"name":"kdwan","email":"kdwan@google.com"},{"name":"ampprojectbot","email":"bot@amp.dev"},{"name":"esth","email":"esther@amp.dev"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"d018f203e5a930819b0aad42c8ced32261896006","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.8.5.tgz","fileCount":6,"integrity":"sha512-QKWDcR4+Tt77N8xrwT74SGSCkMAx1paFA3SEVLvPHRNq8K4Q1X9dWvjX974Wf1UpNd3H4cshqwJf43wPC/5iGw==","signatures":[{"sig":"MEUCICSGzz9DlVEnMvQew9Kboi0FUavZbPQa6Pc62mI3cO9SAiEAtVh8qUn9wgXD5grs2197eAFAFbniT8bgA/km8u4jtCE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22897,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh30WDCRA9TVsSAnZWagAAQ88P/2NEzhzubabCCkjy4QG4\naupwQkPdr/SD9CFu7WRytp26TH2HgIhdvfYhMCQMnO0/On+MUPcrGqOQy1tS\nlj9Rodm7t6+GJLJWfLFG55oXPPrIQnvbawMTEMIzOk/OJYBzB+7exGUdfIl8\nVCCQtTZXf70pXRMQ2I/S2lsgrSfN/MSKl1opjQYor4Y/Y1IBsJp+841VeF+A\n6AQq1BjlDV6SKObiXRiAm0FPHF/iWAysQX2AdAfWsmYLC59Wp8c/yNjKczgq\np8uXO1DfHXg83U6RjHQlN94V4f0FJwuGtKY1cU3BaeS9W825vRzlojzDDvLv\nr9AwkL+B6oU0sIg9WaRHcoLLGqLyNQR0YGaDwC2jro/RHmdcGBVRppoBKK5C\nPjWNhpwHtoAbW8fFqYY9OHQaYIwbXKnxSlJYeNZdlgba8ZgMnUhBO5aMD7/P\nL7t95iy+5xZRgh+PyehFIa2BBTrTt5YxGDSjwJxSDKkqe20A3wxvEfFl0guU\nZv/IhOyqh9S0kMgCffH1TlKQ30s7A54i1kFmdEjax3L3SRfY7LYHKF2Zr2Rc\nKrV0G5ZYfXm3B9z6XfeG1pO2cjSfp4s5MLzHe/R1+TJyh8e8nfw1p0zYIrPg\nTcVZPRw/BpTuoTvli5Vp+18gxH9U8CSnb4/LzGETgRci9bKOlsoVC+eKAWrZ\nr7CA\r\n=vtxB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"5be59bc968c6b5cc3cb1e6e5e6a1b19d36787170","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/4.0.0/node@v16.13.1+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"16.13.1","dependencies":{"mime-types":"2.1.29","whatwg-url":"8.4.0","@ampproject/toolbox-core":"^2.8.0","@ampproject/toolbox-optimizer":"2.8.5","@ampproject/toolbox-runtime-version":"^2.8.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.8.5_1642022275708_0.9893769660662366","host":"s3://npm-registry-packages"}},"2.8.6":{"name":"@ampproject/toolbox-optimizer-express","version":"2.8.6","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.8.6","maintainers":[{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"},{"name":"kdwan","email":"kdwan@google.com"},{"name":"ampprojectbot","email":"bot@amp.dev"},{"name":"esth","email":"esther@amp.dev"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"f1a61135fa58df23da786f98e2617cf48e12c74d","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.8.6.tgz","fileCount":6,"integrity":"sha512-5hKymhxbk1Ej7mUgCP6Yo1EiARyIwr0iMH5FuGrb9SpfR9WThm4/rqn43D0EFtqmT42C53XUyxZpph/ZtMrM+A==","signatures":[{"sig":"MEUCIQC0beL8dFo1Hg0hVhIt2jV3XfOx3L9U61/rAfQXDvf0FgIgeFM30G5Qw0PK++JICc9wLCfnuEF1TkPMLzXtidduNp8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22898,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh3056CRA9TVsSAnZWagAAS8MP/1D3nQuB9fmCTDh1Y+im\nj5jUFCv9xBGVN3JESdkzD2xfUvrgCFHchlQrhu9QJjgo3ynAEl16gO+fdEJJ\nFBAkZ0SOsHYloaIS5A7QM0A5QGL0OW4zjKYLjd9ufuMovSGGx62zOZ7g7VE6\n9tDq+NsamKbvrMPgompOJO7aXU6E9jNNXNM2KMD9mhwTZRDTIqVwkUb9Wt3Q\nC6naMYB4qzrryjCtIPumBem6DOTRQhD67jeHXSfCS2Qrryb+EKnjXqP3QgWT\nn0HNkHIbP+ixnGTQ6YDmfx/uKHg4NsYYXkj2YIZsXQLz6gSQnFbspbQQxD/W\nn2vTDZTVTQFVUpr8El1d7cICwagfJIW/Gi2eA9D3uBmsyo0wXNpuJfyXXKj0\nDtFM9AsILH4FkWLD/CbdSvhbTheE+wrILsOFGi9a2Vj0HW7tOg6AqZi9CkGy\nOmbikkAf2Z9WkR8FF3Wgg+XGAGi84Hz0H6P8BNjce+ZzhAFHye+lDaPDeZbp\nzvaRmk4IiLEirMiyPoVY8Gp9hr8qQpIlsjDHMzb2ceCRpNMmrv1Q9Nq0WolT\nN2M5YdFNd6ihdvLBA0n7s7YW9KnNRGDfb9cB8hRvAofyLAarXY4QmsFkLreU\nPzHO/5XV06NVqWC1ay47+Tld3dLg8rStbkObTdbPJVtS3WR3qHlkbEfoPcQ7\nCpr1\r\n=VHSj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"9e537758baa2424a96d920308df75eb24b6e3dec","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/4.0.0/node@v16.13.1+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"16.13.1","dependencies":{"mime-types":"2.1.29","whatwg-url":"8.4.0","@ampproject/toolbox-core":"^2.8.0","@ampproject/toolbox-optimizer":"^2.8.6","@ampproject/toolbox-runtime-version":"^2.8.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.8.6_1642024569732_0.2631958579515319","host":"s3://npm-registry-packages"}},"2.8.7":{"name":"@ampproject/toolbox-optimizer-express","version":"2.8.7","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.8.7","maintainers":[{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"},{"name":"kdwan","email":"kdwan@google.com"},{"name":"ampprojectbot","email":"bot@amp.dev"},{"name":"esth","email":"esther@amp.dev"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"721422efce44aa53bb8c34fac0181977b14449a0","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.8.7.tgz","fileCount":6,"integrity":"sha512-eN8TfAxpTQljrbk1b4MfAfyLg8tmENt+kEFbFROGZtPuo8AXi6xXlHEhtDFEmu5YyCZQI/t4GGAl2Iz90LtwAw==","signatures":[{"sig":"MEYCIQDXbFiqiwH2u3mFuELPlJuqB7jnX518qClZxhzwNosd9QIhALST2fLzAIhmqHeELyDBlt5gri8MlHuZ/NRssfIPvVqL","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22897,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh4aBGCRA9TVsSAnZWagAAZUYP/3iCGy6NsN8gFLVMSlGM\nBBofyWjmKzBVAqXu3EmgtASC5/53ojiPGjcVIZ6U7eY04HfDW279bf/c98kp\npqepwwgwd2oC1PbBeN0Wb5iVEw3XUyJcfIAffIcdD7kYbCmrf+cjf7H9NM4i\nR2yQUBW807XwwSSpNLfvSSAkBFcuYfg7NXOLbyFX9+m36n5RYANbuaNO89UM\n7LnsBTD+gINrI1H4LxJ0Yxkw2SFRZetVKHTFXmzN/P554jxo/FIoKqNvCXqE\njX0W3Jd3Gcr2dO8yrLgvJpgH7ZmOyO3K9VeD9hOfTa8dDpj1GatJO5n9Exhf\nd7oOn9QcuJpvHfQ6r+AnPEPQ4PsIrrxUfOLW5L9c5IAWzPlqFto6za0DbfBP\nx4D6axwWY6CqDYp0CYdzHv048afxmVf/vfXxtmXln2aMeiQLN0Wj+uW9Y/hX\nwnlNYesbMLH3X9r9MN2hiESUlpdkADFlTWoQeedhu5WTzdZ8xW/CZ9RWOYFO\nqRFbjrOhBfjmU3m+TM5lfZYI1sP/0mXGwLNgS8dgMCcvE9Xr/mmfFzNI1pfX\n1TRR056NO8WT91MyCgR6xg1F0GTzX0uHk3XuwhYP7L+PuyAAtrGMZYAP6YqN\na/Ya+4VC0L5GSfQhpjKSGkQg+aGLWg6Mib4jr6mxnxt9ns+wbNA9Gyd7/NwR\nh7Ab\r\n=VKQT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"7c5297fe6a977432eac8b2f606e43abf6550aec3","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/4.0.0/node@v16.13.1+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"16.13.1","dependencies":{"mime-types":"2.1.29","whatwg-url":"8.4.0","@ampproject/toolbox-core":"^2.8.0","@ampproject/toolbox-optimizer":"2.8.7","@ampproject/toolbox-runtime-version":"^2.8.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.8.7_1642176582339_0.608277317234359","host":"s3://npm-registry-packages"}},"2.8.8":{"name":"@ampproject/toolbox-optimizer-express","version":"2.8.8","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.8.8","maintainers":[{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"},{"name":"kdwan","email":"kdwan@google.com"},{"name":"ampprojectbot","email":"bot@amp.dev"},{"name":"esth","email":"esther@amp.dev"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"8155daf0b822173db9d112107db9f6f8fc793c95","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.8.8.tgz","fileCount":6,"integrity":"sha512-YFZFiNDBQ5N5ovDlI6/rgOWIlVxVXzVSR4Oy7LRQC/bKh2viAxorIe00fLcD9PiyIY9Hkk2conh37m9YE3+IIg==","signatures":[{"sig":"MEUCIQCr+FeC2rTMhnsVvkKTp1+Xk7poJWm7NbbustcVa8Kv5AIgYypUgCCZg+D760peUWFLz6acltMKuxYh5TuY5re4ctw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22897,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiBpRGCRA9TVsSAnZWagAARUYP/jZ9uVppj+Um6XiihpV0\nE4PRl0OPi55Yl1QW3IoxlgqKZiwzJa2BVlpLx7DJXhQOxcO7GAnbTbA/nEjA\nPlze0YOsBFsnfLp7fZ7601Ma3gQvK8gwJgVl1/oJYmcK4MzGFMpcn+4OgL+E\nJWy93yzriIvaZT0yDAvWkbQq2CGbG34/zljiNwPSrJxsRcXeaB2KjgY2efRT\nvloy5J68tAyS2kwJFae8GPWGkJJe3XfPstwhpBbkd66LjVucpTL4oPzGSBpT\nuqm8aRKCNRUVxZ58uDkYhgvT1LM0MCPXb3l4ZFOUmie6ahheXyFyz9/W29kY\nvY6CVZiKRCPxLBvjxiNNgIjXNRCZIZSQTAZDCA6Wr5mQYeuasxpoftO7j6DR\n+rEi5lY/8D0OUVRx0Avc2Wa+KUG+wLMniUPfyIpJqFNLVnkWZ7/lehG7ZaDz\nPumQ1KSsnbZ84BhNhUgwkpaKt9lbGYNFOf+a2dN1L5cEVf3p5pU6eRwFcg1K\nk+Jey2JmiWi8dFj3tqmhHRAv/9Gyciz//nUXGNysx+bHn5ePiNBgIp2OiiOs\nuJ5W3OhlB2FWSvmnLmHry2R03lmEBr5yWMz6gctyRjTyyrPe3V4siBaeO0dj\n689d/vCQVEVBkOANF/P7++a+E98l/IH5NZhDeR7qsiFC+LEUJgin3ekHX1RH\n2WjG\r\n=lafI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"a2f119379a740b54d19240a36197de3dc22b333d","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/4.0.0/node@v16.13.1+x64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"16.13.1","dependencies":{"mime-types":"2.1.29","whatwg-url":"8.4.0","@ampproject/toolbox-core":"^2.8.0","@ampproject/toolbox-optimizer":"2.8.8","@ampproject/toolbox-runtime-version":"^2.8.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.8.8_1644598342740_0.9668906418848642","host":"s3://npm-registry-packages"}},"2.8.9":{"name":"@ampproject/toolbox-optimizer-express","version":"2.8.9","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.8.9","maintainers":[{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"},{"name":"kdwan","email":"kdwan@google.com"},{"name":"ampprojectbot","email":"bot@amp.dev"},{"name":"esth","email":"esther@amp.dev"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"3c8398f13506c6e819292311b9628b3eec109fee","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.8.9.tgz","fileCount":6,"integrity":"sha512-0IXhHmSpLOT6qbfUNeNdEJeDrfW2wxF6k+O3OQDiTqbG1/RV+vjKn0Ry5OoV1cvtaHzw0n6ix/YEgy0hkqDl4w==","signatures":[{"sig":"MEYCIQCaj/33NFTi48m5OrqvHUoTgX+MQ5QHlALK5mvCYH8//wIhAOUb8eRp90XE7TUtkR0Ax8YtQEJSWQxXWQvNnuD+8d5s","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22897,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiKmPhACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpEkg/9Fe9qzSrRHopMgAibQEnQnCze57Ay7YYxsV8dUx0hlYnSsw4T\r\nVxHZE8bOsoOyUlrsaH4pgFhtihLmOU8WNVOn1ls/nUUG3CHlAan4ENztzN/3\r\nXYYsHtAnjqhftwhVEALIvEeAYuIk3eoTxjzWW4Ca8RDLjcY+tGUmj0t6DjVa\r\nDgLrwMS5y5r9/rKnN5gOQFvt/HL8GpB9A5fm29ZD5uTafnhe7y5pePxs0iCw\r\ntAPSpldKlJrJD2CNw3lrwp65iO/enshMycsOmkY2iaGzNCZjh1ICQlPo1o+F\r\nwudIJ6nVAL69TRGqrqlHn+08BLNiz01KBarfktQq0BiSDy/wblX09LgQMwng\r\nXHWpVlS8zamWMcNJNMxhvy2naVFEJhapS58l4Uh2f1A8/ZB/hVfhN+pQFIrm\r\nzgzwUR5vgBZiMHDMJ3+bHNMfkLeND7D4ftDaGhm6JDIww7KiXi3At+MQL2VT\r\nYeWB4xbN2ZYJC5wqHpYfozY5GwVZYjiDM+N/kmIHMCW9CqVj5/O7hdMh8QXb\r\nEqkV5N4/TX02Dvppce6WZBXIqrv5NqkW/8ZyLc4lvaF5dqG55qw59Pxp8I1z\r\n1q68Dn+ffeuBXNmM5dzKA/FaXJwVxy9vyBkbcXl7GO/rphWlKwfq/LvTAOZp\r\n0oM0V/rofZfE0+C3Msat8RYDcBgzTk+4AOY=\r\n=OVWH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"52fcf9a80314a678b7a16fdab77fff0c6ad06f67","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/4.0.0/node@v17.5.0+arm64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"17.5.0","dependencies":{"mime-types":"2.1.29","whatwg-url":"8.4.0","@ampproject/toolbox-core":"^2.8.0","@ampproject/toolbox-optimizer":"2.8.9","@ampproject/toolbox-runtime-version":"^2.8.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.8.9_1646945249232_0.8786983511745576","host":"s3://npm-registry-packages"}},"2.8.10":{"name":"@ampproject/toolbox-optimizer-express","version":"2.8.10","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.8.10","maintainers":[{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"},{"name":"kdwan","email":"kdwan@google.com"},{"name":"ampprojectbot","email":"bot@amp.dev"},{"name":"esth","email":"esther@amp.dev"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"0949393483016e484af99a679291977108bf613d","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.8.10.tgz","fileCount":6,"integrity":"sha512-b8lBllLW8TEastBubWyVsh+IjqBKx0YAZU2EadQLrGulbkuUwsN1VeEMq/oZ2SJPoXkB44bA23YM8BVxKcYWdQ==","signatures":[{"sig":"MEUCIQCF4xp9oFQBsezmU31MwqBlwKyQbec9uGOiKHi5RddVDAIgVkPZ+dgCTz2KGVrTq+YmwC005F7G/0gohg6ixNdcfYE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22899,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiMj4RACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpkpA/9FOhJYeDBAy+baDG5cK5LuJ9m+m53nOnA7MB7F4FZ7O+F/zON\r\nk74btTccot+5/punfhX63gT/eb1ToePo+2QM4u1H5gPxswS7hQQABpsQXHr5\r\nk8/ljxAYX6lE7jf9W3T0A26is3ZraJMCkqqfcOYvsrCLZq8JpgEwlfDHoKB4\r\nP8RknCZImqh9KfQydMxH0Nb2G2kxPPoGll9onYXFk1l8JA28z2g+UtPGJuNM\r\nb9VCLaifSNWUmxUBjWvOkpqWjWRHeHgttEFEVnrzmzagSD3K+vPXCFY2i0mj\r\nWrfngy9fQjwSHvZyKwQt+ASk8c4IgRRy+JJIbFmRJEtCTtJxthqDaqZSgrRO\r\nxdWVAAnhcH5pxID+YYnh3ZkeL9A4VDpL32qeC+gBMZ+VEs5CtNLyn4JdkIk3\r\nmuCQcB8zq/hHgtu3sk8bhXn5O45GTFEQ/m2LpisvehenP8LtDEWOpCo0UBm9\r\n6HqKPOrGId158U4jg8z0mwkAK6Cbi2z9pS3orBHx+i221TMYrBGx5RJ4Raal\r\nkcuFuiV7cR8vcO/5gnEXOjAKTYsJyuCw8zIyVr+1YDQgb4SrKO5kZpngbHgy\r\naf2kXIPmQvZUGAMZSiUcqBb04uGZx3xpSFPRcOrFQ4v1g395Hh3dKvm6JQO0\r\nqKLs+GTWzuCXt+uq9myPNE9x2p6Wq05lFlo=\r\n=jO4T\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"0505268585abe293b688bd4de3a0101675189a3b","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/4.0.0/node@v17.5.0+arm64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"17.5.0","dependencies":{"mime-types":"2.1.29","whatwg-url":"8.4.0","@ampproject/toolbox-core":"^2.8.0","@ampproject/toolbox-optimizer":"2.8.10","@ampproject/toolbox-runtime-version":"^2.8.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.8.10_1647459856958_0.2473677968135921","host":"s3://npm-registry-packages"}},"2.9.0":{"name":"@ampproject/toolbox-optimizer-express","version":"2.9.0","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.9.0","maintainers":[{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"},{"name":"kdwan","email":"kdwan@google.com"},{"name":"ampprojectbot","email":"bot@amp.dev"},{"name":"esth","email":"esther@amp.dev"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"b40f60e54923fe200d12ef4a261ef4d945204bba","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.9.0.tgz","fileCount":6,"integrity":"sha512-vM9LEOgfmSYW5q/F39e+msS9zxtW2CRkHKWeVoCLB6h6YCxu1WDZnHzTIPUuSvp0eAu2mD5srF6n4tKaHM+3ow==","signatures":[{"sig":"MEUCIQDbVoQFlgrMFbg5KSHu9uzBncBa5EnAEAMPwatL0kaccQIgP1bAZAWF8URUD/rflc1RTIdIYYHI+giVh7MdjB74/Aw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22895,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJitNGmACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmptHw/+LIZE+7ZGfm4RLmsH1YXk41EmAL1i7LzeKXinUY591WXooBuE\r\nUeI6DNJ1HHPiONR+1yc+f3i8ds5x6XrvXdvAxuH1UH6D16nRinUmn9YFxUOI\r\nDUKfypIOL6+1hZNn/lgY8IT25N82Cihf6o3zV8T+SpTTD6/cPCy6MoMF5pHZ\r\noT5cqDr6lyy4bjvZv+A1SromEdvavD8x0bRYvdh1Gf5/jAiwKzzivbUPOtiF\r\ne6HRExXJGthMuB5CFQgLobUnHpCvD1enH5DiJXldfyqi0ZvjHosXz9nnFHon\r\nuLhOvNbRn79KQT09ZQGq/D8dYHuweBsf4oSBJSAEhGIng2X18loTRYicOBf1\r\nG9EOVy50C74IPbDNZjQ289e6fvfdOF9sl8wjdDsFDE5OyoZ3gaVZNDKfiM5F\r\nCO2YoC0YqOXugP4Fsov6SWiYCbjmiz/W/NYiSt0NlzGEq5Ree7u+/rhUWgtF\r\n0xCTTv3htF3p/dGpWztLwl9HrIuSFi/3Htr6Rca+zActQunre3HBXAr5XJzB\r\npY3FaUjapNY9804gBpbU7Ub2Md5ijfscOqLqqbrawBtsO6Bs80CEe40yht/g\r\ntu4sOFCC6G5xwLmAuNG2OgadzfcWT8tB/ROlQzr+zfaS+XiDxNQ8FphBjtrl\r\n1HHyG9749VRSRHRceUnLtOp1rYT8mOsmVYs=\r\n=BDL0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"0826825fd8c5f3abac821ebe87a318e70f33c9dd","_npmUser":{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"lerna/5.1.4/node@v18.2.0+arm64 (darwin)","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"18.2.0","dependencies":{"mime-types":"2.1.29","whatwg-url":"8.4.0","@ampproject/toolbox-core":"2.9.0","@ampproject/toolbox-optimizer":"2.9.0","@ampproject/toolbox-runtime-version":"2.9.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.9.0_1656017317937_0.6692340529910816","host":"s3://npm-registry-packages"}},"2.10.0":{"name":"@ampproject/toolbox-optimizer-express","version":"2.10.0","keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","_id":"@ampproject/toolbox-optimizer-express@2.10.0","maintainers":[{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"},{"name":"kdwan","email":"kdwan@google.com"},{"name":"ampprojectbot","email":"bot@amp.dev"},{"name":"esth","email":"esther@amp.dev"}],"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"dist":{"shasum":"6383dc1731f5d67ef3aed671d47925d6b67f0a07","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.10.0.tgz","fileCount":5,"integrity":"sha512-grJgMJtg9RlKmlZK5N2ECE1jWfRWdFI0GlhoozCmKWpvBYNsN7toppAKj3y/eaJHrL6R0PicJjf9g7g9PMXrAw==","signatures":[{"sig":"MEQCIBJdzErUPXNR2KUchRokHKCXhEZw6ppVNN/2+yeoL1EuAiAaQbAqPo9y8p8qDPyVGs0cksSi46Yq6/KaebHflLet3Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11556},"main":"index.js","gitHead":"6103eb57765445355421826791361ac9ed9cf4d8","_npmUser":{"name":"ampproject-admin","email":"admin@ampproject.org"},"repository":{"url":"git+https://github.com/ampproject/amp-toolbox.git","type":"git","directory":"packages/optimizer-express"},"_npmVersion":"10.8.1","description":"Express middleware for @ampproject/toolbox-optimizer","directories":{},"_nodeVersion":"20.12.2","dependencies":{"mime-types":"2.1.29","whatwg-url":"8.4.0","@ampproject/toolbox-core":"2.10.0","@ampproject/toolbox-optimizer":"2.10.0","@ampproject/toolbox-runtime-version":"2.10.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/toolbox-optimizer-express_2.10.0_1718320558615_0.7966024329868504","host":"s3://npm-registry-packages"}},"2.10.1":{"name":"@ampproject/toolbox-optimizer-express","version":"2.10.1","description":"Express middleware for @ampproject/toolbox-optimizer","main":"index.js","repository":{"type":"git","url":"git+https://github.com/ampproject/amp-toolbox.git","directory":"packages/optimizer-express"},"keywords":["amp","amp-optimizer","amp-toolbox"],"author":{"name":"AMPHTML Team"},"license":"Apache-2.0","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","dependencies":{"@ampproject/toolbox-core":"2.10.1","@ampproject/toolbox-optimizer":"2.10.1","@ampproject/toolbox-runtime-version":"2.10.1","mime-types":"2.1.29","whatwg-url":"8.4.0"},"gitHead":"6103eb57765445355421826791361ac9ed9cf4d8","_id":"@ampproject/toolbox-optimizer-express@2.10.1","_nodeVersion":"20.12.2","_npmVersion":"10.8.1","dist":{"integrity":"sha512-VdQQdj8hozee+rxEhK7ml5DRf0XIM8IGFXAwgqcJ3dEdj2/geIGZznidlYwJ1LfdtxBLIYY5fBWJbYp0NuF0Aw==","shasum":"309353a2ba62550f70deabc70636b49127df9f40","tarball":"https://registry.npmjs.org/@ampproject/toolbox-optimizer-express/-/toolbox-optimizer-express-2.10.1.tgz","fileCount":5,"unpackedSize":11556,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCuUDYp/gsdKXHdcotatCQQp4ry/3ETagPu4HcBJcenQgIgFG8JZj7osxjr6hzEe7dYNG5iqFZ57YI6xgAjP8yn58w="}]},"_npmUser":{"name":"ampproject-admin","email":"admin@ampproject.org"},"directories":{},"maintainers":[{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"},{"name":"kdwan","email":"kdwan@google.com"},{"name":"ampprojectbot","email":"bot@amp.dev"},{"name":"esth","email":"esther@amp.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/toolbox-optimizer-express_2.10.1_1718326216080_0.5183854739299063"},"_hasShrinkwrap":false}},"time":{"created":"2019-06-10T18:21:07.287Z","modified":"2024-06-14T00:50:16.814Z","1.0.0-beta.0":"2019-06-10T18:21:07.667Z","1.0.0-beta.1":"2019-06-20T09:05:54.251Z","1.0.0-beta.3":"2019-06-20T09:50:31.799Z","1.0.0-beta.4":"2019-07-11T14:38:15.146Z","1.0.0-beta.5":"2019-07-15T15:36:10.385Z","1.0.0-beta.6":"2019-07-23T13:02:25.400Z","1.0.0-beta.7":"2019-07-24T13:51:42.153Z","1.0.0-beta.8":"2019-08-01T09:09:12.436Z","1.0.0-beta.9":"2019-08-01T09:16:02.600Z","1.0.0":"2019-08-06T20:00:11.842Z","1.0.1":"2019-08-06T20:11:19.060Z","1.1.0-beta.0":"2019-08-29T20:27:50.139Z","1.1.0-beta.1":"2019-09-19T19:20:45.506Z","1.1.0":"2019-10-08T14:14:24.850Z","1.1.1":"2019-10-08T14:43:31.984Z","1.1.2-alpha.0":"2019-10-09T19:55:40.725Z","1.1.2":"2019-10-15T13:28:21.296Z","2.0.0-alpha.0":"2020-01-22T14:30:33.697Z","2.0.0-alpha.1":"2020-01-22T14:44:28.018Z","2.0.0-alpha.2":"2020-01-22T14:56:14.536Z","2.0.0-alpha.3":"2020-01-23T10:01:26.330Z","2.0.0-alpha.4":"2020-01-28T15:26:13.414Z","2.0.0-alpha.5":"2020-01-28T21:54:57.410Z","2.0.0-alpha.6":"2020-01-31T12:23:34.291Z","2.0.0-alpha.7":"2020-02-13T21:13:49.355Z","2.0.0":"2020-02-13T21:24:50.470Z","2.0.1":"2020-03-18T11:49:26.106Z","2.3.0":"2020-04-15T09:31:51.659Z","2.3.1":"2020-05-05T19:56:11.005Z","2.4.0-alpha.0":"2020-05-06T19:49:58.054Z","2.4.0-alpha.1":"2020-05-07T11:08:06.585Z","2.4.0-alpha.2":"2020-05-08T13:35:22.552Z","2.4.0":"2020-05-13T20:30:43.708Z","2.5.0-alpha.0":"2020-05-19T06:36:41.617Z","2.5.0":"2020-05-29T12:01:40.022Z","2.5.1":"2020-06-09T07:31:04.002Z","2.5.2":"2020-06-11T18:45:03.708Z","2.5.3":"2020-06-15T07:47:39.432Z","2.5.4":"2020-06-22T19:52:18.511Z","2.5.5":"2020-06-26T17:55:38.115Z","2.5.6":"2020-07-07T16:57:28.851Z","2.5.7":"2020-07-08T08:23:41.160Z","2.5.8":"2020-07-08T09:07:10.910Z","2.5.9":"2020-07-08T12:21:29.136Z","2.5.10":"2020-07-08T12:43:13.155Z","2.5.11":"2020-07-14T11:57:50.594Z","2.5.12":"2020-07-15T18:39:12.429Z","2.5.14":"2020-07-24T06:50:41.637Z","2.6.0":"2020-08-10T12:44:09.519Z","2.7.0-alpha.0":"2020-08-14T19:18:52.842Z","2.7.0-alpha.1":"2020-08-19T17:52:29.067Z","2.7.1-alpha.0":"2020-12-01T19:14:34.643Z","2.7.1":"2020-12-02T14:55:05.848Z","2.7.2":"2020-12-15T19:51:04.376Z","2.7.3":"2020-12-17T15:12:27.930Z","2.7.4":"2020-12-23T11:50:51.689Z","2.7.5":"2021-01-18T12:11:27.784Z","2.7.6":"2021-02-01T13:00:03.210Z","2.8.0-canary.0":"2021-02-12T17:24:58.776Z","2.8.0-canary.1":"2021-02-12T17:35:10.642Z","2.8.0-canary.2":"2021-02-15T11:29:23.499Z","2.8.0-canary.3":"2021-02-15T19:12:24.771Z","2.8.0-canary.4":"2021-03-02T12:54:46.073Z","2.8.0-canary.6":"2021-03-18T17:25:32.282Z","2.8.0-canary.9":"2021-03-22T15:01:53.384Z","2.8.0-canary.15":"2021-03-30T20:35:22.974Z","2.8.0-canary.16":"2021-04-08T17:49:32.500Z","2.8.0-canary.18":"2021-05-07T20:27:02.498Z","2.8.0-canary.19":"2021-05-19T20:03:31.343Z","2.8.0-canary.20":"2021-05-20T13:46:20.989Z","2.8.0-canary.21":"2021-05-31T11:55:30.596Z","2.8.0":"2021-05-31T14:35:56.470Z","2.8.1-canary.0":"2021-06-01T08:19:28.558Z","2.8.1-canary.1":"2021-06-08T12:47:46.361Z","2.8.1":"2021-06-10T13:19:26.250Z","2.8.2":"2021-07-02T15:38:30.504Z","2.8.3":"2021-07-12T09:16:42.758Z","2.8.4":"2021-11-17T15:26:56.851Z","3.0.0-canary.2":"2022-01-11T20:37:52.837Z","2.8.5":"2022-01-12T21:17:55.924Z","2.8.6":"2022-01-12T21:56:10.091Z","2.8.7":"2022-01-14T16:09:42.472Z","2.8.8":"2022-02-11T16:52:22.895Z","2.8.9":"2022-03-10T20:47:29.372Z","2.8.10":"2022-03-16T19:44:17.169Z","2.9.0":"2022-06-23T20:48:38.159Z","2.10.0":"2024-06-13T23:15:58.791Z","2.10.1":"2024-06-14T00:50:16.313Z"},"maintainers":[{"name":"ampproject-admin","email":"admin@ampproject.org"},{"name":"kristoferbaxter","email":"kbax@me.com"},{"name":"jridgewell","email":"justin+npm@ridgewell.name"},{"name":"choumx","email":"willchou@google.com"},{"name":"amp-toolbox","email":"amp-toolbox-eng@google.com"},{"name":"fstanis","email":"filip@stanis.me"},{"name":"erwinmombay","email":"erwin.mombay@gmail.com"},{"name":"samouri","email":"jzfisgreat@gmail.com"},{"name":"caroqliu","email":"carolineliu@google.com"},{"name":"rsimha","email":"rsimha@amp.dev"},{"name":"dvoytenko","email":"dvoytenko@gmail.com"},{"name":"patrickkettner","email":"patrickkettner@gmail.com"},{"name":"alanorozco","email":"orozcoalan@gmail.com"},{"name":"kdwan","email":"kdwan@google.com"},{"name":"ampprojectbot","email":"bot@amp.dev"},{"name":"esth","email":"esther@amp.dev"}],"author":{"name":"AMPHTML Team"},"repository":{"type":"git","url":"git+https://github.com/ampproject/amp-toolbox.git","directory":"packages/optimizer-express"},"keywords":["amp","amp-optimizer","amp-toolbox"],"license":"Apache-2.0","homepage":"https://github.com/ampproject/amp-toolbox/tree/main/packages/optimizer-express","bugs":{"url":"https://github.com/ampproject/amp-toolbox/issues"},"readme":"## Introduction\n\n[![npm version](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express.svg)](https://badge.fury.io/js/%40ampproject%2Ftoolbox-optimizer-express)\n\namp-optimizer-express is an [express](http://expressjs.com/) middleware that optimizes page load\ntimes for websites using AMP for their canonical pages. The middleware uses the same\nserver-side-rendering optimizations as the Google AMP Cache.\n\nThe middleware uses the [amp-optimizer](/packages/optimizer) component to apply server-side-rendering on the fly.\n\n## How it works\n\namp-optimizer-express intercepts the responses and replaces their content with a version that has been\ntransformed by [amp-optimizer](/packages/optimizer).\n\nAs the server-side-rendered version of the content is not valid AMP, the component also\nprovides the original content on an alternative URL. Server-side-rendering\ntransformations are not applied to this URL, and the original valid AMP is served.\n\nAn AMPHTML link tag is added to the server-side-rendered version, linking it to the original valid\nAMP version hosted on the alternative URL.\n\nExample:\n\nA valid AMP page is served on `https://example.com/index.html`.\n\nWhen the amp-optimizer-express middleware is used, that URL will serve the server-side-rendered version\nof the content.\n\nThe original, valid AMP will then become available at `https://example.com/index.html?amp`.\n\nAn amphtml link will be added to the server-side-rendered version:\n\n```html\n<link rel=\"amphtml\" href=\"https://example.com/index.html?amp\">\n```\n\n## Usage\n\nInstall via:\n\n```\n$ npm install @ampproject/toolbox-optimizer-express\n```\n\nThe AMP Optimizer Middleware can be used like any other express middleware.\n\nIt is important that the middleware is used *before* the middleware or route that renders the page.\n\nThe example bellow will transform HTML being loaded by express-static:\n\n```javascript\nconst express = require('express');\nconst path = require('path');\nconst app = express();\nconst AmpOptimizerMiddleware = require('@ampproject/toolbox-optimizer-express');\n\n// It's important that the AmpOptimizerMiddleware is added *before* the static middleware.\n// This allows us to replace the parts needed before static handles the request.\napp.use(AmpOptimizerMiddleware.create());\n\nconst staticMiddleware = express.static(path.join(__dirname, '/public'));\napp.use(staticMiddleware);\n```\n\n## Options\n\nThe following options are supported:\n\n   * `runtimeVersion`: true if the optimizer should use versioned runtime imports (default is false).\n   * `ampOnly`: true if the optimizer should only be applied to AMP files (indicated by the lightning bolt in the header).\n\nExample:\n\n```\napp.use(AmpOptimizerMiddleware.create({\n  runtimeVersion: true\n});\n```\n\n## Best Practice: Cache server-side-rendered AMPs\n\nTo achieve best performance, those transformations shouldn't be applied for\nevery request. Instead, transformations should only be applied the *first time*\na page is requested, and the results then cached. Caching can happen on the CDN\nlevel, on the site's internal infrastructure (e.g.: Memcached), or even on the\nserver itself, if the set of pages is small enough to fit in memory.\n","readmeFilename":"README.md"}